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_valu