Generated C files for E2AP v2.0
[sim/e2-interface.git] / e2sim / previous / src / ASN1 / generated / X2AP-PDU-Contents.hpp
diff --git a/e2sim/previous/src/ASN1/generated/X2AP-PDU-Contents.hpp b/e2sim/previous/src/ASN1/generated/X2AP-PDU-Contents.hpp
deleted file mode 100644 (file)
index dd85f97..0000000
+++ /dev/null
@@ -1,68476 +0,0 @@
-/*****************************************************************************
-# Copyright 2019 AT&T Intellectual Property                                  *
-#                                                                            *
-# Licensed under the Apache License, Version 2.0 (the "License");            *
-# you may not use this file except in compliance with the License.           *
-# You may obtain a copy of the License at                                    *
-#                                                                            *
-#      http://www.apache.org/licenses/LICENSE-2.0                            *
-#                                                                            *
-# Unless required by applicable law or agreed to in writing, software        *
-# distributed under the License is distributed on an "AS IS" BASIS,          *
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   *
-# See the License for the specific language governing permissions and        *
-# limitations under the License.                                             *
-#                                                                            *
-******************************************************************************/
-
-#pragma once
-
-#include "asn/asn.hpp"
-static_assert(ASN_API_VERSION_MAJOR == 5, "re-generate the ASN parser's code using 'make regen-asn' (do not use -j option)");
-
-#include "X2AP-IEs.hpp"
-#include "X2AP-Containers.hpp"
-#include "X2AP-Constants.hpp"
-
-/*
-ActivatedCellList-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct ActivatedCellList_Item_ExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ActivatedCellList-Item::= SEQUENCE {
-       ecgi                                                            ECGI,
-       iE-Extensions                                           ProtocolExtensionContainer { {ActivatedCellList-Item-ExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct ActivatedCellList_Item : asn::sequence<2, 0, true, 1>
-{
-       static constexpr const char* name() {return "ActivatedCellList-Item";}
-       using parent_t = asn::sequence<2, 0, true, 1>;
-       struct ecgi_t : ECGI
-       {
-               static constexpr const char* name() {return "ecgi_t";}
-               using parent_t = ECGI;
-
-       };
-       ecgi_t& ref_ecgi() {return ecgi;}
-       ecgi_t const& ref_ecgi() const {return ecgi;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<ActivatedCellList_Item_ExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<ActivatedCellList_Item_ExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(ecgi);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(ecgi);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               ecgi.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       ecgi_t  ecgi;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-ActivatedCellList ::= SEQUENCE (SIZE (1..maxCellineNB)) OF ActivatedCellList-Item
-*/
-
-struct ActivatedCellList_elm : ActivatedCellList_Item
-{
-       static constexpr const char* name() {return "ActivatedCellList_elm";}
-       using parent_t = ActivatedCellList_Item;
-
-};
-struct ActivatedCellList : asn::sequenceof<ActivatedCellList_elm>
-{
-       static constexpr const char* name() {return "ActivatedCellList";}
-       using parent_t = asn::sequenceof<ActivatedCellList_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxCellineNB >>;
-
-};
-/*
-ActivatedNRCellList-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct ActivatedNRCellList_Item_ExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ActivatedNRCellList-Item::= SEQUENCE {
-       nrCellID                                                NRCGI,
-       iE-Extensions                                           ProtocolExtensionContainer { {ActivatedNRCellList-Item-ExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct ActivatedNRCellList_Item : asn::sequence<2, 0, true, 1>
-{
-       static constexpr const char* name() {return "ActivatedNRCellList-Item";}
-       using parent_t = asn::sequence<2, 0, true, 1>;
-       struct nrCellID_t : NRCGI
-       {
-               static constexpr const char* name() {return "nrCellID_t";}
-               using parent_t = NRCGI;
-
-       };
-       nrCellID_t& ref_nrCellID() {return nrCellID;}
-       nrCellID_t const& ref_nrCellID() const {return nrCellID;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<ActivatedNRCellList_Item_ExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<ActivatedNRCellList_Item_ExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(nrCellID);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(nrCellID);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               nrCellID.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       nrCellID_t      nrCellID;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-ActivatedNRCellList ::= SEQUENCE (SIZE (1.. maxCellinengNB)) OF ActivatedNRCellList-Item
-*/
-
-struct ActivatedNRCellList_elm : ActivatedNRCellList_Item
-{
-       static constexpr const char* name() {return "ActivatedNRCellList_elm";}
-       using parent_t = ActivatedNRCellList_Item;
-
-};
-struct ActivatedNRCellList : asn::sequenceof<ActivatedNRCellList_elm>
-{
-       static constexpr const char* name() {return "ActivatedNRCellList";}
-       using parent_t = asn::sequenceof<ActivatedNRCellList_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxCellinengNB >>;
-
-};
-/*
-CellActivationFailure-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-Cause                                           CRITICALITY ignore      TYPE Cause                                              PRESENCE mandatory }|
-       { ID id-CriticalityDiagnostics          CRITICALITY ignore      TYPE CriticalityDiagnostics             PRESENCE optional },
-       ...
-}
-*/
-
-struct CellActivationFailure_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_Cause() { set(id_Cause); type=1;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=2;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_Cause)) { type = 1; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_Cause);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_Cause() { set(ignore); type=1;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=2;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               Cause& select_id_Cause() { return set<Cause>(1); }
-               Cause const* get_id_Cause() const { return get<Cause>(1); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(2); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(2); }
-               bool is_unknown() const { return type == 3; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<Cause>(); break;
-                       case 2: var.destroy<CriticalityDiagnostics>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<Cause>(1);
-                       v.template operator()<CriticalityDiagnostics>(2);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_Cause()); return true;
-                       case 2: v(select_id_CriticalityDiagnostics()); return true;
-                       case 3: if(type != 3) {clear(); asn::base::set();} type = 3; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<Cause>()); return true;
-                       case 2: v(var.as<CriticalityDiagnostics>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(Cause)];
-                       char dummy2[sizeof(CriticalityDiagnostics)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_Cause() { set(mandatory); type=1;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=2;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-CellActivationFailure ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{CellActivationFailure-IEs}},
-       ...
-}
-*/
-
-struct CellActivationFailure : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "CellActivationFailure";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<CellActivationFailure_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<CellActivationFailure_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-ServedCellsToActivate-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct ServedCellsToActivate_Item_ExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ServedCellsToActivate-Item::= SEQUENCE {
-       ecgi                                            ECGI,
-       iE-Extensions                                   ProtocolExtensionContainer { {ServedCellsToActivate-Item-ExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct ServedCellsToActivate_Item : asn::sequence<2, 0, true, 1>
-{
-       static constexpr const char* name() {return "ServedCellsToActivate-Item";}
-       using parent_t = asn::sequence<2, 0, true, 1>;
-       struct ecgi_t : ECGI
-       {
-               static constexpr const char* name() {return "ecgi_t";}
-               using parent_t = ECGI;
-
-       };
-       ecgi_t& ref_ecgi() {return ecgi;}
-       ecgi_t const& ref_ecgi() const {return ecgi;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<ServedCellsToActivate_Item_ExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<ServedCellsToActivate_Item_ExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(ecgi);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(ecgi);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               ecgi.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       ecgi_t  ecgi;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-ServedCellsToActivate::= SEQUENCE (SIZE (1..maxCellineNB)) OF ServedCellsToActivate-Item
-*/
-
-struct ServedCellsToActivate_elm : ServedCellsToActivate_Item
-{
-       static constexpr const char* name() {return "ServedCellsToActivate_elm";}
-       using parent_t = ServedCellsToActivate_Item;
-
-};
-struct ServedCellsToActivate : asn::sequenceof<ServedCellsToActivate_elm>
-{
-       static constexpr const char* name() {return "ServedCellsToActivate";}
-       using parent_t = asn::sequenceof<ServedCellsToActivate_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxCellineNB >>;
-
-};
-/*
-CellActivationRequest-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-ServedCellsToActivate   CRITICALITY reject      TYPE ServedCellsToActivate              PRESENCE mandatory},
-       ...
-}
-*/
-
-struct CellActivationRequest_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_ServedCellsToActivate() { set(id_ServedCellsToActivate); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_ServedCellsToActivate)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_ServedCellsToActivate);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_ServedCellsToActivate() { set(reject); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               ServedCellsToActivate& select_id_ServedCellsToActivate() { return set<ServedCellsToActivate>(1); }
-               ServedCellsToActivate const* get_id_ServedCellsToActivate() const { return get<ServedCellsToActivate>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<ServedCellsToActivate>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<ServedCellsToActivate>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_ServedCellsToActivate()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<ServedCellsToActivate>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(ServedCellsToActivate)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_ServedCellsToActivate() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-CellActivationRequest ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{CellActivationRequest-IEs}},
-       ...
-}
-*/
-
-struct CellActivationRequest : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "CellActivationRequest";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<CellActivationRequest_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<CellActivationRequest_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-CellActivationResponse-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-ActivatedCellList               CRITICALITY ignore      TYPE ActivatedCellList                          PRESENCE mandatory}|
-       { ID id-CriticalityDiagnostics  CRITICALITY ignore      TYPE CriticalityDiagnostics                     PRESENCE optional},
-       ...
-}
-*/
-
-struct CellActivationResponse_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_ActivatedCellList() { set(id_ActivatedCellList); type=1;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=2;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_ActivatedCellList)) { type = 1; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_ActivatedCellList);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_ActivatedCellList() { set(ignore); type=1;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=2;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               ActivatedCellList& select_id_ActivatedCellList() { return set<ActivatedCellList>(1); }
-               ActivatedCellList const* get_id_ActivatedCellList() const { return get<ActivatedCellList>(1); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(2); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(2); }
-               bool is_unknown() const { return type == 3; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<ActivatedCellList>(); break;
-                       case 2: var.destroy<CriticalityDiagnostics>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<ActivatedCellList>(1);
-                       v.template operator()<CriticalityDiagnostics>(2);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_ActivatedCellList()); return true;
-                       case 2: v(select_id_CriticalityDiagnostics()); return true;
-                       case 3: if(type != 3) {clear(); asn::base::set();} type = 3; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<ActivatedCellList>()); return true;
-                       case 2: v(var.as<CriticalityDiagnostics>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(ActivatedCellList)];
-                       char dummy2[sizeof(CriticalityDiagnostics)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_ActivatedCellList() { set(mandatory); type=1;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=2;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-CellActivationResponse ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{CellActivationResponse-IEs}},
-       ...
-}
-*/
-
-struct CellActivationResponse : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "CellActivationResponse";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<CellActivationResponse_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<CellActivationResponse_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-Limited-list-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct Limited_list_ExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-Limited-list   ::= SEQUENCE (SIZE (1..maxCellinengNB)) OF SEQUENCE {
-       nrCellID                        NRCGI,
-               iE-Extensions                                           ProtocolExtensionContainer { {Limited-list-ExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct Limited_list_elm : asn::sequence<2, 0, true, 1>
-{
-       static constexpr const char* name() {return "Limited_list_elm";}
-       using parent_t = asn::sequence<2, 0, true, 1>;
-       struct nrCellID_t : NRCGI
-       {
-               static constexpr const char* name() {return "nrCellID_t";}
-               using parent_t = NRCGI;
-
-       };
-       nrCellID_t& ref_nrCellID() {return nrCellID;}
-       nrCellID_t const& ref_nrCellID() const {return nrCellID;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<Limited_list_ExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<Limited_list_ExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(nrCellID);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(nrCellID);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               nrCellID.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       nrCellID_t      nrCellID;
-       iE_Extensions_t iE_Extensions;
-
-};
-struct Limited_list : asn::sequenceof<Limited_list_elm>
-{
-       static constexpr const char* name() {return "Limited-list";}
-       using parent_t = asn::sequenceof<Limited_list_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxCellinengNB >>;
-
-};
-/*
-CellAssistanceInformation ::= CHOICE {
-       limited-list                            Limited-list,
-       full-list                               ENUMERATED {allServedNRcells, ...},
-       ...
-}
-*/
-
-struct CellAssistanceInformation : asn::choice<2, 0, true>
-{
-       static constexpr const char* name() {return "CellAssistanceInformation";}
-       using parent_t = asn::choice<2, 0, true>;
-       index_type get_index() const {return index;}
-       bool is_unknown() const {return index == 3;}
-       void set_unknown() { set_index(3);  }
-       ~CellAssistanceInformation() {clear();}
-       struct limited_list_t : Limited_list
-       {
-               static constexpr const char* name() {return "limited_list_t";}
-               using parent_t = Limited_list;
-
-       };
-       struct full_list_t : asn::enumerated<1, 0, true>
-       {
-               static constexpr const char* name() {return "full_list_t";}
-               using parent_t = asn::enumerated<1, 0, true>;
-               typedef enum {
-                       allServedNRcells
-               } index_t;
-
-       };
-
-       void clear()
-       {
-               switch(get_index())
-               {
-               case 1: var.destroy<limited_list_t>(); break;
-               case 2: var.destroy<full_list_t>(); break;
-               }
-               index = 0;
-               base::clear();
-       }
-       template<typename V> bool decode(size_t idx, V& v)
-       {
-               clear();
-               switch(idx)
-               {
-               case 1: set_index(1); return v(var.build<limited_list_t>());
-               case 2: set_index(2); return v(var.build<full_list_t>());
-               }
-               return false;
-
-       }
-       template<typename V> bool encode(V& v) const
-       {
-               switch(get_index())
-               {
-               case 1: return v(var.as<limited_list_t>());
-               case 2: return v(var.as<full_list_t>());
-               }
-               return false;
-       }
-       template<typename V> static inline void enumerate(V& v)
-       {
-               v.template operator()<limited_list_t>(1);
-               v.template operator()<full_list_t>(2);
-
-       }
-       limited_list_t& select_limited_list() { if(get_index() != 1) { clear(); set_index(1); return var.build<limited_list_t>();} return var.as<limited_list_t>();}
-       limited_list_t const* get_limited_list() const { if(get_index() == 1) { return &var.as<limited_list_t>();} return nullptr; }
-       full_list_t& select_full_list() { if(get_index() != 2) { clear(); set_index(2); return var.build<full_list_t>();} return var.as<full_list_t>();}
-       full_list_t const* get_full_list() const { if(get_index() == 2) { return &var.as<full_list_t>();} return nullptr; }
-       private:
-       void set_index(index_type i) {index = i; base::set();}
-       union union_type
-       {
-               char dummy1[sizeof(limited_list_t)];
-               char dummy2[sizeof(full_list_t)];
-
-       };
-       asn::variant<sizeof(union_type)>        var;
-       index_type      index {0};
-};
-/*
-CellInformation-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-{ ID id-ABSInformation                                         CRITICALITY ignore      EXTENSION ABSInformation                                                        PRESENCE optional }|
-{ ID id-InvokeIndication                                       CRITICALITY ignore      EXTENSION InvokeIndication                                                      PRESENCE optional }|
-{ ID id-IntendedULDLConfiguration                      CRITICALITY ignore      EXTENSION SubframeAssignment                                            PRESENCE optional }|
-{ ID id-ExtendedULInterferenceOverloadInfo     CRITICALITY ignore      EXTENSION ExtendedULInterferenceOverloadInfo    PRESENCE optional }|
-{ ID id-CoMPInformation                                                CRITICALITY ignore      EXTENSION CoMPInformation                                                       PRESENCE optional }|
-{ ID id-DynamicDLTransmissionInformation       CRITICALITY ignore      EXTENSION DynamicDLTransmissionInformation              PRESENCE optional },
-       ...
-}
-*/
-
-struct CellInformation_Item_ExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 7; }
-               void clear() {type = 0;}
-               void select_id_ABSInformation() { set(id_ABSInformation); type=1;}
-               void select_id_InvokeIndication() { set(id_InvokeIndication); type=2;}
-               void select_id_IntendedULDLConfiguration() { set(id_IntendedULDLConfiguration); type=3;}
-               void select_id_ExtendedULInterferenceOverloadInfo() { set(id_ExtendedULInterferenceOverloadInfo); type=4;}
-               void select_id_CoMPInformation() { set(id_CoMPInformation); type=5;}
-               void select_id_DynamicDLTransmissionInformation() { set(id_DynamicDLTransmissionInformation); type=6;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_ABSInformation)) { type = 1; return true; }
-                       else if(equal(id_InvokeIndication)) { type = 2; return true; }
-                       else if(equal(id_IntendedULDLConfiguration)) { type = 3; return true; }
-                       else if(equal(id_ExtendedULInterferenceOverloadInfo)) { type = 4; return true; }
-                       else if(equal(id_CoMPInformation)) { type = 5; return true; }
-                       else if(equal(id_DynamicDLTransmissionInformation)) { type = 6; return true; }
-                       else { type = 7; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_ABSInformation);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_InvokeIndication);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_IntendedULDLConfiguration);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_ExtendedULInterferenceOverloadInfo);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_CoMPInformation);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(id_DynamicDLTransmissionInformation);} return false;
-                       case 7: type = 7; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 7; }
-               void clear() {type = 0;}
-               void select_id_ABSInformation() { set(ignore); type=1;}
-               void select_id_InvokeIndication() { set(ignore); type=2;}
-               void select_id_IntendedULDLConfiguration() { set(ignore); type=3;}
-               void select_id_ExtendedULInterferenceOverloadInfo() { set(ignore); type=4;}
-               void select_id_CoMPInformation() { set(ignore); type=5;}
-               void select_id_DynamicDLTransmissionInformation() { set(ignore); type=6;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else if(equal(ignore)) { type = 5; return true; }
-                       else if(equal(ignore)) { type = 6; return true; }
-                       else { type = 7; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 7: type = 7; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               ABSInformation& select_id_ABSInformation() { return set<ABSInformation>(1); }
-               ABSInformation const* get_id_ABSInformation() const { return get<ABSInformation>(1); }
-               InvokeIndication& select_id_InvokeIndication() { return set<InvokeIndication>(2); }
-               InvokeIndication const* get_id_InvokeIndication() const { return get<InvokeIndication>(2); }
-               SubframeAssignment& select_id_IntendedULDLConfiguration() { return set<SubframeAssignment>(3); }
-               SubframeAssignment const* get_id_IntendedULDLConfiguration() const { return get<SubframeAssignment>(3); }
-               ExtendedULInterferenceOverloadInfo& select_id_ExtendedULInterferenceOverloadInfo() { return set<ExtendedULInterferenceOverloadInfo>(4); }
-               ExtendedULInterferenceOverloadInfo const* get_id_ExtendedULInterferenceOverloadInfo() const { return get<ExtendedULInterferenceOverloadInfo>(4); }
-               CoMPInformation& select_id_CoMPInformation() { return set<CoMPInformation>(5); }
-               CoMPInformation const* get_id_CoMPInformation() const { return get<CoMPInformation>(5); }
-               DynamicDLTransmissionInformation& select_id_DynamicDLTransmissionInformation() { return set<DynamicDLTransmissionInformation>(6); }
-               DynamicDLTransmissionInformation const* get_id_DynamicDLTransmissionInformation() const { return get<DynamicDLTransmissionInformation>(6); }
-               bool is_unknown() const { return type == 7; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<ABSInformation>(); break;
-                       case 2: var.destroy<InvokeIndication>(); break;
-                       case 3: var.destroy<SubframeAssignment>(); break;
-                       case 4: var.destroy<ExtendedULInterferenceOverloadInfo>(); break;
-                       case 5: var.destroy<CoMPInformation>(); break;
-                       case 6: var.destroy<DynamicDLTransmissionInformation>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<ABSInformation>(1);
-                       v.template operator()<InvokeIndication>(2);
-                       v.template operator()<SubframeAssignment>(3);
-                       v.template operator()<ExtendedULInterferenceOverloadInfo>(4);
-                       v.template operator()<CoMPInformation>(5);
-                       v.template operator()<DynamicDLTransmissionInformation>(6);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_ABSInformation()); return true;
-                       case 2: v(select_id_InvokeIndication()); return true;
-                       case 3: v(select_id_IntendedULDLConfiguration()); return true;
-                       case 4: v(select_id_ExtendedULInterferenceOverloadInfo()); return true;
-                       case 5: v(select_id_CoMPInformation()); return true;
-                       case 6: v(select_id_DynamicDLTransmissionInformation()); return true;
-                       case 7: if(type != 7) {clear(); asn::base::set();} type = 7; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<ABSInformation>()); return true;
-                       case 2: v(var.as<InvokeIndication>()); return true;
-                       case 3: v(var.as<SubframeAssignment>()); return true;
-                       case 4: v(var.as<ExtendedULInterferenceOverloadInfo>()); return true;
-                       case 5: v(var.as<CoMPInformation>()); return true;
-                       case 6: v(var.as<DynamicDLTransmissionInformation>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(ABSInformation)];
-                       char dummy2[sizeof(CoMPInformation)];
-                       char dummy3[sizeof(DynamicDLTransmissionInformation)];
-                       char dummy4[sizeof(ExtendedULInterferenceOverloadInfo)];
-                       char dummy5[sizeof(InvokeIndication)];
-                       char dummy6[sizeof(SubframeAssignment)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 7; }
-               void clear() {type = 0;}
-               void select_id_ABSInformation() { set(optional); type=1;}
-               void select_id_InvokeIndication() { set(optional); type=2;}
-               void select_id_IntendedULDLConfiguration() { set(optional); type=3;}
-               void select_id_ExtendedULInterferenceOverloadInfo() { set(optional); type=4;}
-               void select_id_CoMPInformation() { set(optional); type=5;}
-               void select_id_DynamicDLTransmissionInformation() { set(optional); type=6;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(optional)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else if(equal(optional)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else if(equal(optional)) { type = 6; return true; }
-                       else { type = 7; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 7: type = 7; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-CellInformation-Item ::= SEQUENCE {
-       cell-ID                                                 ECGI,
-       ul-InterferenceOverloadIndication               UL-InterferenceOverloadIndication               OPTIONAL,
-       ul-HighInterferenceIndicationInfo               UL-HighInterferenceIndicationInfo               OPTIONAL,
-       relativeNarrowbandTxPower                               RelativeNarrowbandTxPower                               OPTIONAL,
-       iE-Extensions                                                   ProtocolExtensionContainer { {CellInformation-Item-ExtIEs} }    OPTIONAL,
-       ...
-}
-*/
-
-struct CellInformation_Item : asn::sequence<5, 0, true, 4>
-{
-       static constexpr const char* name() {return "CellInformation-Item";}
-       using parent_t = asn::sequence<5, 0, true, 4>;
-       struct cell_ID_t : ECGI
-       {
-               static constexpr const char* name() {return "cell_ID_t";}
-               using parent_t = ECGI;
-
-       };
-       cell_ID_t& ref_cell_ID() {return cell_ID;}
-       cell_ID_t const& ref_cell_ID() const {return cell_ID;}
-       struct ul_InterferenceOverloadIndication_t : UL_InterferenceOverloadIndication
-       {
-               static constexpr const char* name() {return "ul_InterferenceOverloadIndication_t";}
-               using parent_t = UL_InterferenceOverloadIndication;
-               static constexpr bool optional = true;
-
-       };
-       ul_InterferenceOverloadIndication_t& set_ul_InterferenceOverloadIndication() { ul_InterferenceOverloadIndication.setpresent(true); return ul_InterferenceOverloadIndication;}
-       ul_InterferenceOverloadIndication_t const* get_ul_InterferenceOverloadIndication() const {return ul_InterferenceOverloadIndication.is_valid() ? &ul_InterferenceOverloadIndication : nullptr;}
-       struct ul_HighInterferenceIndicationInfo_t : UL_HighInterferenceIndicationInfo
-       {
-               static constexpr const char* name() {return "ul_HighInterferenceIndicationInfo_t";}
-               using parent_t = UL_HighInterferenceIndicationInfo;
-               static constexpr bool optional = true;
-
-       };
-       ul_HighInterferenceIndicationInfo_t& set_ul_HighInterferenceIndicationInfo() { ul_HighInterferenceIndicationInfo.setpresent(true); return ul_HighInterferenceIndicationInfo;}
-       ul_HighInterferenceIndicationInfo_t const* get_ul_HighInterferenceIndicationInfo() const {return ul_HighInterferenceIndicationInfo.is_valid() ? &ul_HighInterferenceIndicationInfo : nullptr;}
-       struct relativeNarrowbandTxPower_t : RelativeNarrowbandTxPower
-       {
-               static constexpr const char* name() {return "relativeNarrowbandTxPower_t";}
-               using parent_t = RelativeNarrowbandTxPower;
-               static constexpr bool optional = true;
-
-       };
-       relativeNarrowbandTxPower_t& set_relativeNarrowbandTxPower() { relativeNarrowbandTxPower.setpresent(true); return relativeNarrowbandTxPower;}
-       relativeNarrowbandTxPower_t const* get_relativeNarrowbandTxPower() const {return relativeNarrowbandTxPower.is_valid() ? &relativeNarrowbandTxPower : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<CellInformation_Item_ExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<CellInformation_Item_ExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(cell_ID);
-               v(ul_InterferenceOverloadIndication);
-               v(ul_HighInterferenceIndicationInfo);
-               v(relativeNarrowbandTxPower);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(cell_ID);
-               v(ul_InterferenceOverloadIndication);
-               v(ul_HighInterferenceIndicationInfo);
-               v(relativeNarrowbandTxPower);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               cell_ID.clear();
-               ul_InterferenceOverloadIndication.clear();
-               ul_HighInterferenceIndicationInfo.clear();
-               relativeNarrowbandTxPower.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       cell_ID_t       cell_ID;
-       ul_InterferenceOverloadIndication_t     ul_InterferenceOverloadIndication;
-       ul_HighInterferenceIndicationInfo_t     ul_HighInterferenceIndicationInfo;
-       relativeNarrowbandTxPower_t     relativeNarrowbandTxPower;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-CellInformation-ItemIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-CellInformation-Item    CRITICALITY ignore      TYPE CellInformation-Item       PRESENCE mandatory      }
-}
-*/
-
-struct CellInformation_ItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_CellInformation_Item() { set(id_CellInformation_Item); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_CellInformation_Item)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_CellInformation_Item);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_CellInformation_Item() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<false>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               CellInformation_Item& select_id_CellInformation_Item() { return set<CellInformation_Item>(1); }
-               CellInformation_Item const* get_id_CellInformation_Item() const { return get<CellInformation_Item>(1); }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<CellInformation_Item>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<CellInformation_Item>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_CellInformation_Item()); return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<CellInformation_Item>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(CellInformation_Item)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_CellInformation_Item() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-CellInformation-List ::= SEQUENCE (SIZE (1..maxCellineNB)) OF ProtocolIE-Single-Container { {CellInformation-ItemIEs} }
-*/
-
-struct CellInformation_List_elm : ProtocolIE_Single_Container<CellInformation_ItemIEs>
-{
-       static constexpr const char* name() {return "CellInformation_List_elm";}
-       using parent_t = ProtocolIE_Single_Container<CellInformation_ItemIEs>;
-
-};
-struct CellInformation_List : asn::sequenceof<CellInformation_List_elm>
-{
-       static constexpr const char* name() {return "CellInformation-List";}
-       using parent_t = asn::sequenceof<CellInformation_List_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxCellineNB >>;
-
-};
-/*
-CellMeasurementResult-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       { ID id-CompositeAvailableCapacityGroup CRITICALITY ignore      EXTENSION CompositeAvailableCapacityGroup               PRESENCE optional}|
-       { ID id-ABS-Status                                              CRITICALITY ignore      EXTENSION ABS-Status                                                            PRESENCE optional}|
-       { ID id-RSRPMRList                                              CRITICALITY ignore      EXTENSION RSRPMRList                                                            PRESENCE optional}|
-       { ID id-CSIReportList                                   CRITICALITY ignore      EXTENSION CSIReportList                                                         PRESENCE optional}|
-       { ID id-CellReportingIndicator                  CRITICALITY ignore      EXTENSION CellReportingIndicator                                        PRESENCE optional},
-       ...
-}
-*/
-
-struct CellMeasurementResult_Item_ExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_CompositeAvailableCapacityGroup() { set(id_CompositeAvailableCapacityGroup); type=1;}
-               void select_id_ABS_Status() { set(id_ABS_Status); type=2;}
-               void select_id_RSRPMRList() { set(id_RSRPMRList); type=3;}
-               void select_id_CSIReportList() { set(id_CSIReportList); type=4;}
-               void select_id_CellReportingIndicator() { set(id_CellReportingIndicator); type=5;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_CompositeAvailableCapacityGroup)) { type = 1; return true; }
-                       else if(equal(id_ABS_Status)) { type = 2; return true; }
-                       else if(equal(id_RSRPMRList)) { type = 3; return true; }
-                       else if(equal(id_CSIReportList)) { type = 4; return true; }
-                       else if(equal(id_CellReportingIndicator)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_CompositeAvailableCapacityGroup);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_ABS_Status);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_RSRPMRList);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_CSIReportList);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_CellReportingIndicator);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_CompositeAvailableCapacityGroup() { set(ignore); type=1;}
-               void select_id_ABS_Status() { set(ignore); type=2;}
-               void select_id_RSRPMRList() { set(ignore); type=3;}
-               void select_id_CSIReportList() { set(ignore); type=4;}
-               void select_id_CellReportingIndicator() { set(ignore); type=5;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else if(equal(ignore)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               CompositeAvailableCapacityGroup& select_id_CompositeAvailableCapacityGroup() { return set<CompositeAvailableCapacityGroup>(1); }
-               CompositeAvailableCapacityGroup const* get_id_CompositeAvailableCapacityGroup() const { return get<CompositeAvailableCapacityGroup>(1); }
-               ABS_Status& select_id_ABS_Status() { return set<ABS_Status>(2); }
-               ABS_Status const* get_id_ABS_Status() const { return get<ABS_Status>(2); }
-               RSRPMRList& select_id_RSRPMRList() { return set<RSRPMRList>(3); }
-               RSRPMRList const* get_id_RSRPMRList() const { return get<RSRPMRList>(3); }
-               CSIReportList& select_id_CSIReportList() { return set<CSIReportList>(4); }
-               CSIReportList const* get_id_CSIReportList() const { return get<CSIReportList>(4); }
-               CellReportingIndicator& select_id_CellReportingIndicator() { return set<CellReportingIndicator>(5); }
-               CellReportingIndicator const* get_id_CellReportingIndicator() const { return get<CellReportingIndicator>(5); }
-               bool is_unknown() const { return type == 6; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<CompositeAvailableCapacityGroup>(); break;
-                       case 2: var.destroy<ABS_Status>(); break;
-                       case 3: var.destroy<RSRPMRList>(); break;
-                       case 4: var.destroy<CSIReportList>(); break;
-                       case 5: var.destroy<CellReportingIndicator>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<CompositeAvailableCapacityGroup>(1);
-                       v.template operator()<ABS_Status>(2);
-                       v.template operator()<RSRPMRList>(3);
-                       v.template operator()<CSIReportList>(4);
-                       v.template operator()<CellReportingIndicator>(5);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_CompositeAvailableCapacityGroup()); return true;
-                       case 2: v(select_id_ABS_Status()); return true;
-                       case 3: v(select_id_RSRPMRList()); return true;
-                       case 4: v(select_id_CSIReportList()); return true;
-                       case 5: v(select_id_CellReportingIndicator()); return true;
-                       case 6: if(type != 6) {clear(); asn::base::set();} type = 6; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<CompositeAvailableCapacityGroup>()); return true;
-                       case 2: v(var.as<ABS_Status>()); return true;
-                       case 3: v(var.as<RSRPMRList>()); return true;
-                       case 4: v(var.as<CSIReportList>()); return true;
-                       case 5: v(var.as<CellReportingIndicator>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(ABS_Status)];
-                       char dummy2[sizeof(CSIReportList)];
-                       char dummy3[sizeof(CellReportingIndicator)];
-                       char dummy4[sizeof(CompositeAvailableCapacityGroup)];
-                       char dummy5[sizeof(RSRPMRList)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_CompositeAvailableCapacityGroup() { set(optional); type=1;}
-               void select_id_ABS_Status() { set(optional); type=2;}
-               void select_id_RSRPMRList() { set(optional); type=3;}
-               void select_id_CSIReportList() { set(optional); type=4;}
-               void select_id_CellReportingIndicator() { set(optional); type=5;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(optional)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else if(equal(optional)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-CellMeasurementResult-Item ::= SEQUENCE {
-       cell-ID                                         ECGI,
-       hWLoadIndicator                         HWLoadIndicator         OPTIONAL,
-       s1TNLLoadIndicator                      S1TNLLoadIndicator      OPTIONAL,
-       radioResourceStatus                     RadioResourceStatus     OPTIONAL,
-       iE-Extensions                           ProtocolExtensionContainer { {CellMeasurementResult-Item-ExtIEs} }      OPTIONAL,
-       ...
-}
-*/
-
-struct CellMeasurementResult_Item : asn::sequence<5, 0, true, 4>
-{
-       static constexpr const char* name() {return "CellMeasurementResult-Item";}
-       using parent_t = asn::sequence<5, 0, true, 4>;
-       struct cell_ID_t : ECGI
-       {
-               static constexpr const char* name() {return "cell_ID_t";}
-               using parent_t = ECGI;
-
-       };
-       cell_ID_t& ref_cell_ID() {return cell_ID;}
-       cell_ID_t const& ref_cell_ID() const {return cell_ID;}
-       struct hWLoadIndicator_t : HWLoadIndicator
-       {
-               static constexpr const char* name() {return "hWLoadIndicator_t";}
-               using parent_t = HWLoadIndicator;
-               static constexpr bool optional = true;
-
-       };
-       hWLoadIndicator_t& set_hWLoadIndicator() { hWLoadIndicator.setpresent(true); return hWLoadIndicator;}
-       hWLoadIndicator_t const* get_hWLoadIndicator() const {return hWLoadIndicator.is_valid() ? &hWLoadIndicator : nullptr;}
-       struct s1TNLLoadIndicator_t : S1TNLLoadIndicator
-       {
-               static constexpr const char* name() {return "s1TNLLoadIndicator_t";}
-               using parent_t = S1TNLLoadIndicator;
-               static constexpr bool optional = true;
-
-       };
-       s1TNLLoadIndicator_t& set_s1TNLLoadIndicator() { s1TNLLoadIndicator.setpresent(true); return s1TNLLoadIndicator;}
-       s1TNLLoadIndicator_t const* get_s1TNLLoadIndicator() const {return s1TNLLoadIndicator.is_valid() ? &s1TNLLoadIndicator : nullptr;}
-       struct radioResourceStatus_t : RadioResourceStatus
-       {
-               static constexpr const char* name() {return "radioResourceStatus_t";}
-               using parent_t = RadioResourceStatus;
-               static constexpr bool optional = true;
-
-       };
-       radioResourceStatus_t& set_radioResourceStatus() { radioResourceStatus.setpresent(true); return radioResourceStatus;}
-       radioResourceStatus_t const* get_radioResourceStatus() const {return radioResourceStatus.is_valid() ? &radioResourceStatus : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<CellMeasurementResult_Item_ExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<CellMeasurementResult_Item_ExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(cell_ID);
-               v(hWLoadIndicator);
-               v(s1TNLLoadIndicator);
-               v(radioResourceStatus);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(cell_ID);
-               v(hWLoadIndicator);
-               v(s1TNLLoadIndicator);
-               v(radioResourceStatus);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               cell_ID.clear();
-               hWLoadIndicator.clear();
-               s1TNLLoadIndicator.clear();
-               radioResourceStatus.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       cell_ID_t       cell_ID;
-       hWLoadIndicator_t       hWLoadIndicator;
-       s1TNLLoadIndicator_t    s1TNLLoadIndicator;
-       radioResourceStatus_t   radioResourceStatus;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-CellMeasurementResult-ItemIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-CellMeasurementResult-Item      CRITICALITY ignore      TYPE CellMeasurementResult-Item PRESENCE mandatory}
-}
-*/
-
-struct CellMeasurementResult_ItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_CellMeasurementResult_Item() { set(id_CellMeasurementResult_Item); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_CellMeasurementResult_Item)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_CellMeasurementResult_Item);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_CellMeasurementResult_Item() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<false>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               CellMeasurementResult_Item& select_id_CellMeasurementResult_Item() { return set<CellMeasurementResult_Item>(1); }
-               CellMeasurementResult_Item const* get_id_CellMeasurementResult_Item() const { return get<CellMeasurementResult_Item>(1); }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<CellMeasurementResult_Item>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<CellMeasurementResult_Item>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_CellMeasurementResult_Item()); return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<CellMeasurementResult_Item>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(CellMeasurementResult_Item)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_CellMeasurementResult_Item() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-CellMeasurementResult-List ::= SEQUENCE (SIZE (1..maxCellineNB)) OF ProtocolIE-Single-Container { {CellMeasurementResult-ItemIEs} }
-*/
-
-struct CellMeasurementResult_List_elm : ProtocolIE_Single_Container<CellMeasurementResult_ItemIEs>
-{
-       static constexpr const char* name() {return "CellMeasurementResult_List_elm";}
-       using parent_t = ProtocolIE_Single_Container<CellMeasurementResult_ItemIEs>;
-
-};
-struct CellMeasurementResult_List : asn::sequenceof<CellMeasurementResult_List_elm>
-{
-       static constexpr const char* name() {return "CellMeasurementResult-List";}
-       using parent_t = asn::sequenceof<CellMeasurementResult_List_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxCellineNB >>;
-
-};
-/*
-CellToReport-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct CellToReport_Item_ExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-CellToReport-Item ::= SEQUENCE {
-       cell-ID                                                                 ECGI,
-       iE-Extensions                                                   ProtocolExtensionContainer { {CellToReport-Item-ExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct CellToReport_Item : asn::sequence<2, 0, true, 1>
-{
-       static constexpr const char* name() {return "CellToReport-Item";}
-       using parent_t = asn::sequence<2, 0, true, 1>;
-       struct cell_ID_t : ECGI
-       {
-               static constexpr const char* name() {return "cell_ID_t";}
-               using parent_t = ECGI;
-
-       };
-       cell_ID_t& ref_cell_ID() {return cell_ID;}
-       cell_ID_t const& ref_cell_ID() const {return cell_ID;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<CellToReport_Item_ExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<CellToReport_Item_ExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(cell_ID);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(cell_ID);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               cell_ID.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       cell_ID_t       cell_ID;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-CellToReport-ItemIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-CellToReport-Item       CRITICALITY ignore      TYPE CellToReport-Item  PRESENCE mandatory}
-}
-*/
-
-struct CellToReport_ItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_CellToReport_Item() { set(id_CellToReport_Item); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_CellToReport_Item)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_CellToReport_Item);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_CellToReport_Item() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<false>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               CellToReport_Item& select_id_CellToReport_Item() { return set<CellToReport_Item>(1); }
-               CellToReport_Item const* get_id_CellToReport_Item() const { return get<CellToReport_Item>(1); }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<CellToReport_Item>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<CellToReport_Item>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_CellToReport_Item()); return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<CellToReport_Item>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(CellToReport_Item)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_CellToReport_Item() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-CellToReport-List              ::= SEQUENCE (SIZE (1..maxCellineNB)) OF ProtocolIE-Single-Container { {CellToReport-ItemIEs} }
-*/
-
-struct CellToReport_List_elm : ProtocolIE_Single_Container<CellToReport_ItemIEs>
-{
-       static constexpr const char* name() {return "CellToReport_List_elm";}
-       using parent_t = ProtocolIE_Single_Container<CellToReport_ItemIEs>;
-
-};
-struct CellToReport_List : asn::sequenceof<CellToReport_List_elm>
-{
-       static constexpr const char* name() {return "CellToReport-List";}
-       using parent_t = asn::sequenceof<CellToReport_List_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxCellineNB >>;
-
-};
-/*
-MeasurementFailureCause-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct MeasurementFailureCause_Item_ExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-MeasurementFailureCause-Item ::= SEQUENCE {
-       measurementFailedReportCharacteristics                  ReportCharacteristics,
-       cause                                                                                   Cause,
-       iE-Extensions                                                                   ProtocolExtensionContainer { {MeasurementFailureCause-Item-ExtIEs} }    OPTIONAL,
-       ...
-}
-*/
-
-struct MeasurementFailureCause_Item : asn::sequence<3, 0, true, 1>
-{
-       static constexpr const char* name() {return "MeasurementFailureCause-Item";}
-       using parent_t = asn::sequence<3, 0, true, 1>;
-       struct measurementFailedReportCharacteristics_t : ReportCharacteristics
-       {
-               static constexpr const char* name() {return "measurementFailedReportCharacteristics_t";}
-               using parent_t = ReportCharacteristics;
-
-       };
-       measurementFailedReportCharacteristics_t& ref_measurementFailedReportCharacteristics() {return measurementFailedReportCharacteristics;}
-       measurementFailedReportCharacteristics_t const& ref_measurementFailedReportCharacteristics() const {return measurementFailedReportCharacteristics;}
-       struct cause_t : Cause
-       {
-               static constexpr const char* name() {return "cause_t";}
-               using parent_t = Cause;
-
-       };
-       cause_t& ref_cause() {return cause;}
-       cause_t const& ref_cause() const {return cause;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<MeasurementFailureCause_Item_ExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<MeasurementFailureCause_Item_ExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(measurementFailedReportCharacteristics);
-               v(cause);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(measurementFailedReportCharacteristics);
-               v(cause);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               measurementFailedReportCharacteristics.clear();
-               cause.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       measurementFailedReportCharacteristics_t        measurementFailedReportCharacteristics;
-       cause_t cause;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-MeasurementFailureCause-ItemIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-MeasurementFailureCause-Item    CRITICALITY ignore      TYPE MeasurementFailureCause-Item               PRESENCE mandatory}
-}
-*/
-
-struct MeasurementFailureCause_ItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_MeasurementFailureCause_Item() { set(id_MeasurementFailureCause_Item); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_MeasurementFailureCause_Item)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_MeasurementFailureCause_Item);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_MeasurementFailureCause_Item() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<false>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               MeasurementFailureCause_Item& select_id_MeasurementFailureCause_Item() { return set<MeasurementFailureCause_Item>(1); }
-               MeasurementFailureCause_Item const* get_id_MeasurementFailureCause_Item() const { return get<MeasurementFailureCause_Item>(1); }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<MeasurementFailureCause_Item>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<MeasurementFailureCause_Item>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_MeasurementFailureCause_Item()); return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<MeasurementFailureCause_Item>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(MeasurementFailureCause_Item)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_MeasurementFailureCause_Item() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-MeasurementFailureCause-List ::= SEQUENCE (SIZE (1..maxFailedMeasObjects)) OF ProtocolIE-Single-Container { {MeasurementFailureCause-ItemIEs} }
-*/
-
-struct MeasurementFailureCause_List_elm : ProtocolIE_Single_Container<MeasurementFailureCause_ItemIEs>
-{
-       static constexpr const char* name() {return "MeasurementFailureCause_List_elm";}
-       using parent_t = ProtocolIE_Single_Container<MeasurementFailureCause_ItemIEs>;
-
-};
-struct MeasurementFailureCause_List : asn::sequenceof<MeasurementFailureCause_List_elm>
-{
-       static constexpr const char* name() {return "MeasurementFailureCause-List";}
-       using parent_t = asn::sequenceof<MeasurementFailureCause_List_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxFailedMeasObjects >>;
-
-};
-/*
-CompleteFailureCauseInformation-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct CompleteFailureCauseInformation_Item_ExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-CompleteFailureCauseInformation-Item ::= SEQUENCE {
-       cell-ID                                                                                 ECGI,
-       measurementFailureCause-List                                    MeasurementFailureCause-List,
-       iE-Extensions                                                                   ProtocolExtensionContainer { {CompleteFailureCauseInformation-Item-ExtIEs} }    OPTIONAL,
-       ...
-}
-*/
-
-struct CompleteFailureCauseInformation_Item : asn::sequence<3, 0, true, 1>
-{
-       static constexpr const char* name() {return "CompleteFailureCauseInformation-Item";}
-       using parent_t = asn::sequence<3, 0, true, 1>;
-       struct cell_ID_t : ECGI
-       {
-               static constexpr const char* name() {return "cell_ID_t";}
-               using parent_t = ECGI;
-
-       };
-       cell_ID_t& ref_cell_ID() {return cell_ID;}
-       cell_ID_t const& ref_cell_ID() const {return cell_ID;}
-       struct measurementFailureCause_List_t : MeasurementFailureCause_List
-       {
-               static constexpr const char* name() {return "measurementFailureCause_List_t";}
-               using parent_t = MeasurementFailureCause_List;
-
-       };
-       measurementFailureCause_List_t& ref_measurementFailureCause_List() {return measurementFailureCause_List;}
-       measurementFailureCause_List_t const& ref_measurementFailureCause_List() const {return measurementFailureCause_List;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<CompleteFailureCauseInformation_Item_ExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<CompleteFailureCauseInformation_Item_ExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(cell_ID);
-               v(measurementFailureCause_List);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(cell_ID);
-               v(measurementFailureCause_List);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               cell_ID.clear();
-               measurementFailureCause_List.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       cell_ID_t       cell_ID;
-       measurementFailureCause_List_t  measurementFailureCause_List;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-CompleteFailureCauseInformation-ItemIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-CompleteFailureCauseInformation-Item    CRITICALITY ignore      TYPE CompleteFailureCauseInformation-Item       PRESENCE mandatory}
-}
-*/
-
-struct CompleteFailureCauseInformation_ItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_CompleteFailureCauseInformation_Item() { set(id_CompleteFailureCauseInformation_Item); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_CompleteFailureCauseInformation_Item)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_CompleteFailureCauseInformation_Item);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_CompleteFailureCauseInformation_Item() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<false>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               CompleteFailureCauseInformation_Item& select_id_CompleteFailureCauseInformation_Item() { return set<CompleteFailureCauseInformation_Item>(1); }
-               CompleteFailureCauseInformation_Item const* get_id_CompleteFailureCauseInformation_Item() const { return get<CompleteFailureCauseInformation_Item>(1); }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<CompleteFailureCauseInformation_Item>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<CompleteFailureCauseInformation_Item>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_CompleteFailureCauseInformation_Item()); return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<CompleteFailureCauseInformation_Item>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(CompleteFailureCauseInformation_Item)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_CompleteFailureCauseInformation_Item() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-CompleteFailureCauseInformation-List ::= SEQUENCE (SIZE (1..maxCellineNB)) OF ProtocolIE-Single-Container { {CompleteFailureCauseInformation-ItemIEs} }
-*/
-
-struct CompleteFailureCauseInformation_List_elm : ProtocolIE_Single_Container<CompleteFailureCauseInformation_ItemIEs>
-{
-       static constexpr const char* name() {return "CompleteFailureCauseInformation_List_elm";}
-       using parent_t = ProtocolIE_Single_Container<CompleteFailureCauseInformation_ItemIEs>;
-
-};
-struct CompleteFailureCauseInformation_List : asn::sequenceof<CompleteFailureCauseInformation_List_elm>
-{
-       static constexpr const char* name() {return "CompleteFailureCauseInformation-List";}
-       using parent_t = asn::sequenceof<CompleteFailureCauseInformation_List_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxCellineNB >>;
-
-};
-/*
-E-RABs-DataForwardingAddress-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_DataForwardingAddress_ItemExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-DataForwardingAddress-Item ::= SEQUENCE {
-       e-RAB-ID                                                E-RAB-ID,
-       dl-GTPtunnelEndpoint                    GTPtunnelEndpoint,
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-DataForwardingAddress-ItemExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_DataForwardingAddress_Item : asn::sequence<3, 0, true, 1>
-{
-       static constexpr const char* name() {return "E-RABs-DataForwardingAddress-Item";}
-       using parent_t = asn::sequence<3, 0, true, 1>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct dl_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "dl_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-
-       };
-       dl_GTPtunnelEndpoint_t& ref_dl_GTPtunnelEndpoint() {return dl_GTPtunnelEndpoint;}
-       dl_GTPtunnelEndpoint_t const& ref_dl_GTPtunnelEndpoint() const {return dl_GTPtunnelEndpoint;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_DataForwardingAddress_ItemExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_DataForwardingAddress_ItemExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(dl_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(dl_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               dl_GTPtunnelEndpoint.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       dl_GTPtunnelEndpoint_t  dl_GTPtunnelEndpoint;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-DataForwardingAddress-ItemIEs   X2AP-PROTOCOL-IES ::= {
-       { ID id-E-RABs-DataForwardingAddress-Item       CRITICALITY ignore      TYPE E-RABs-DataForwardingAddress-Item  PRESENCE mandatory},
-       ...
-}
-*/
-
-struct E_RABs_DataForwardingAddress_ItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_DataForwardingAddress_Item() { set(id_E_RABs_DataForwardingAddress_Item); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_E_RABs_DataForwardingAddress_Item)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_E_RABs_DataForwardingAddress_Item);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_DataForwardingAddress_Item() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               E_RABs_DataForwardingAddress_Item& select_id_E_RABs_DataForwardingAddress_Item() { return set<E_RABs_DataForwardingAddress_Item>(1); }
-               E_RABs_DataForwardingAddress_Item const* get_id_E_RABs_DataForwardingAddress_Item() const { return get<E_RABs_DataForwardingAddress_Item>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<E_RABs_DataForwardingAddress_Item>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<E_RABs_DataForwardingAddress_Item>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_E_RABs_DataForwardingAddress_Item()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<E_RABs_DataForwardingAddress_Item>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(E_RABs_DataForwardingAddress_Item)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_DataForwardingAddress_Item() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-DataForwardingAddress-List ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-DataForwardingAddress-ItemIEs} }
-*/
-
-struct E_RABs_DataForwardingAddress_List_elm : ProtocolIE_Single_Container<E_RABs_DataForwardingAddress_ItemIEs>
-{
-       static constexpr const char* name() {return "E_RABs_DataForwardingAddress_List_elm";}
-       using parent_t = ProtocolIE_Single_Container<E_RABs_DataForwardingAddress_ItemIEs>;
-
-};
-struct E_RABs_DataForwardingAddress_List : asn::sequenceof<E_RABs_DataForwardingAddress_List_elm>
-{
-       static constexpr const char* name() {return "E-RABs-DataForwardingAddress-List";}
-       using parent_t = asn::sequenceof<E_RABs_DataForwardingAddress_List_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxnoofBearers >>;
-
-};
-/*
-DataForwardingAddressIndication-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-New-eNB-UE-X2AP-ID-Extension            CRITICALITY ignore      TYPE UE-X2AP-ID-Extension                                               PRESENCE optional }|
-       { ID id-Old-eNB-UE-X2AP-ID                                      CRITICALITY ignore      TYPE UE-X2AP-ID                                                                 PRESENCE mandatory}|
-       { ID id-Old-eNB-UE-X2AP-ID-Extension            CRITICALITY ignore      TYPE UE-X2AP-ID-Extension                                               PRESENCE optional }|
-       { ID id-E-RABs-DataForwardingAddress-List       CRITICALITY ignore      TYPE E-RABs-DataForwardingAddress-List          PRESENCE mandatory},
-       ...
-}
-*/
-
-struct DataForwardingAddressIndication_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 5; }
-               void clear() {type = 0;}
-               void select_id_New_eNB_UE_X2AP_ID_Extension() { set(id_New_eNB_UE_X2AP_ID_Extension); type=1;}
-               void select_id_Old_eNB_UE_X2AP_ID() { set(id_Old_eNB_UE_X2AP_ID); type=2;}
-               void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(id_Old_eNB_UE_X2AP_ID_Extension); type=3;}
-               void select_id_E_RABs_DataForwardingAddress_List() { set(id_E_RABs_DataForwardingAddress_List); type=4;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_New_eNB_UE_X2AP_ID_Extension)) { type = 1; return true; }
-                       else if(equal(id_Old_eNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_Old_eNB_UE_X2AP_ID_Extension)) { type = 3; return true; }
-                       else if(equal(id_E_RABs_DataForwardingAddress_List)) { type = 4; return true; }
-                       else { type = 5; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_New_eNB_UE_X2AP_ID_Extension);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_Old_eNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_Old_eNB_UE_X2AP_ID_Extension);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_E_RABs_DataForwardingAddress_List);} return false;
-                       case 5: type = 5; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 5; }
-               void clear() {type = 0;}
-               void select_id_New_eNB_UE_X2AP_ID_Extension() { set(ignore); type=1;}
-               void select_id_Old_eNB_UE_X2AP_ID() { set(ignore); type=2;}
-               void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(ignore); type=3;}
-               void select_id_E_RABs_DataForwardingAddress_List() { set(ignore); type=4;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else { type = 5; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID_Extension& select_id_New_eNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(1); }
-               UE_X2AP_ID_Extension const* get_id_New_eNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(1); }
-               UE_X2AP_ID& select_id_Old_eNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(2); }
-               UE_X2AP_ID const* get_id_Old_eNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(2); }
-               UE_X2AP_ID_Extension& select_id_Old_eNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(3); }
-               UE_X2AP_ID_Extension const* get_id_Old_eNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(3); }
-               E_RABs_DataForwardingAddress_List& select_id_E_RABs_DataForwardingAddress_List() { return set<E_RABs_DataForwardingAddress_List>(4); }
-               E_RABs_DataForwardingAddress_List const* get_id_E_RABs_DataForwardingAddress_List() const { return get<E_RABs_DataForwardingAddress_List>(4); }
-               bool is_unknown() const { return type == 5; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 2: var.destroy<UE_X2AP_ID>(); break;
-                       case 3: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 4: var.destroy<E_RABs_DataForwardingAddress_List>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID_Extension>(1);
-                       v.template operator()<UE_X2AP_ID>(2);
-                       v.template operator()<UE_X2AP_ID_Extension>(3);
-                       v.template operator()<E_RABs_DataForwardingAddress_List>(4);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_New_eNB_UE_X2AP_ID_Extension()); return true;
-                       case 2: v(select_id_Old_eNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_Old_eNB_UE_X2AP_ID_Extension()); return true;
-                       case 4: v(select_id_E_RABs_DataForwardingAddress_List()); return true;
-                       case 5: if(type != 5) {clear(); asn::base::set();} type = 5; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 2: v(var.as<UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 4: v(var.as<E_RABs_DataForwardingAddress_List>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(E_RABs_DataForwardingAddress_List)];
-                       char dummy2[sizeof(UE_X2AP_ID)];
-                       char dummy3[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 5; }
-               void clear() {type = 0;}
-               void select_id_New_eNB_UE_X2AP_ID_Extension() { set(optional); type=1;}
-               void select_id_Old_eNB_UE_X2AP_ID() { set(mandatory); type=2;}
-               void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(optional); type=3;}
-               void select_id_E_RABs_DataForwardingAddress_List() { set(mandatory); type=4;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(optional)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(optional)) { type = 3; return true; }
-                       else if(equal(mandatory)) { type = 4; return true; }
-                       else { type = 5; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 5: type = 5; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-DataForwardingAddressIndication ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{DataForwardingAddressIndication-IEs}},
-       ...
-}
-*/
-
-struct DataForwardingAddressIndication : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "DataForwardingAddressIndication";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<DataForwardingAddressIndication_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<DataForwardingAddressIndication_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-E-RABs-Admitted-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_Admitted_Item_ExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-Admitted-Item ::= SEQUENCE {
-       e-RAB-ID                                        E-RAB-ID,
-       uL-GTP-TunnelEndpoint                   GTPtunnelEndpoint       OPTIONAL,
-       dL-GTP-TunnelEndpoint                   GTPtunnelEndpoint       OPTIONAL,
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-Admitted-Item-ExtIEs} }    OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_Admitted_Item : asn::sequence<4, 0, true, 3>
-{
-       static constexpr const char* name() {return "E-RABs-Admitted-Item";}
-       using parent_t = asn::sequence<4, 0, true, 3>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct uL_GTP_TunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "uL_GTP_TunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       uL_GTP_TunnelEndpoint_t& set_uL_GTP_TunnelEndpoint() { uL_GTP_TunnelEndpoint.setpresent(true); return uL_GTP_TunnelEndpoint;}
-       uL_GTP_TunnelEndpoint_t const* get_uL_GTP_TunnelEndpoint() const {return uL_GTP_TunnelEndpoint.is_valid() ? &uL_GTP_TunnelEndpoint : nullptr;}
-       struct dL_GTP_TunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "dL_GTP_TunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       dL_GTP_TunnelEndpoint_t& set_dL_GTP_TunnelEndpoint() { dL_GTP_TunnelEndpoint.setpresent(true); return dL_GTP_TunnelEndpoint;}
-       dL_GTP_TunnelEndpoint_t const* get_dL_GTP_TunnelEndpoint() const {return dL_GTP_TunnelEndpoint.is_valid() ? &dL_GTP_TunnelEndpoint : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_Admitted_Item_ExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_Admitted_Item_ExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(uL_GTP_TunnelEndpoint);
-               v(dL_GTP_TunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(uL_GTP_TunnelEndpoint);
-               v(dL_GTP_TunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               uL_GTP_TunnelEndpoint.clear();
-               dL_GTP_TunnelEndpoint.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       uL_GTP_TunnelEndpoint_t uL_GTP_TunnelEndpoint;
-       dL_GTP_TunnelEndpoint_t dL_GTP_TunnelEndpoint;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-Admitted-ItemIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-E-RABs-Admitted-Item    CRITICALITY ignore      TYPE E-RABs-Admitted-Item       PRESENCE mandatory      }
-}
-*/
-
-struct E_RABs_Admitted_ItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_E_RABs_Admitted_Item() { set(id_E_RABs_Admitted_Item); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_E_RABs_Admitted_Item)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_E_RABs_Admitted_Item);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_E_RABs_Admitted_Item() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<false>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               E_RABs_Admitted_Item& select_id_E_RABs_Admitted_Item() { return set<E_RABs_Admitted_Item>(1); }
-               E_RABs_Admitted_Item const* get_id_E_RABs_Admitted_Item() const { return get<E_RABs_Admitted_Item>(1); }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<E_RABs_Admitted_Item>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<E_RABs_Admitted_Item>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_E_RABs_Admitted_Item()); return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<E_RABs_Admitted_Item>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(E_RABs_Admitted_Item)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_E_RABs_Admitted_Item() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-Admitted-List           ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-Admitted-ItemIEs} }
-*/
-
-struct E_RABs_Admitted_List_elm : ProtocolIE_Single_Container<E_RABs_Admitted_ItemIEs>
-{
-       static constexpr const char* name() {return "E_RABs_Admitted_List_elm";}
-       using parent_t = ProtocolIE_Single_Container<E_RABs_Admitted_ItemIEs>;
-
-};
-struct E_RABs_Admitted_List : asn::sequenceof<E_RABs_Admitted_List_elm>
-{
-       static constexpr const char* name() {return "E-RABs-Admitted-List";}
-       using parent_t = asn::sequenceof<E_RABs_Admitted_List_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxnoofBearers >>;
-
-};
-/*
-E-RABs-Admitted-ToBeAdded-Item-SCG-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-Admitted-ToBeAdded-Item-SCG-Bearer ::= SEQUENCE {
-       e-RAB-ID                                                                E-RAB-ID,
-       s1-DL-GTPtunnelEndpoint                                 GTPtunnelEndpoint,
-       dL-Forwarding-GTPtunnelEndpoint                 GTPtunnelEndpoint                                                                                                                                       OPTIONAL,
-       uL-Forwarding-GTPtunnelEndpoint                 GTPtunnelEndpoint                                                                                                                                       OPTIONAL,
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-Admitted-ToBeAdded-Item-SCG-BearerExtIEs} }        OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer : asn::sequence<5, 0, true, 3>
-{
-       static constexpr const char* name() {return "E-RABs-Admitted-ToBeAdded-Item-SCG-Bearer";}
-       using parent_t = asn::sequence<5, 0, true, 3>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct s1_DL_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "s1_DL_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-
-       };
-       s1_DL_GTPtunnelEndpoint_t& ref_s1_DL_GTPtunnelEndpoint() {return s1_DL_GTPtunnelEndpoint;}
-       s1_DL_GTPtunnelEndpoint_t const& ref_s1_DL_GTPtunnelEndpoint() const {return s1_DL_GTPtunnelEndpoint;}
-       struct dL_Forwarding_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "dL_Forwarding_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       dL_Forwarding_GTPtunnelEndpoint_t& set_dL_Forwarding_GTPtunnelEndpoint() { dL_Forwarding_GTPtunnelEndpoint.setpresent(true); return dL_Forwarding_GTPtunnelEndpoint;}
-       dL_Forwarding_GTPtunnelEndpoint_t const* get_dL_Forwarding_GTPtunnelEndpoint() const {return dL_Forwarding_GTPtunnelEndpoint.is_valid() ? &dL_Forwarding_GTPtunnelEndpoint : nullptr;}
-       struct uL_Forwarding_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "uL_Forwarding_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       uL_Forwarding_GTPtunnelEndpoint_t& set_uL_Forwarding_GTPtunnelEndpoint() { uL_Forwarding_GTPtunnelEndpoint.setpresent(true); return uL_Forwarding_GTPtunnelEndpoint;}
-       uL_Forwarding_GTPtunnelEndpoint_t const* get_uL_Forwarding_GTPtunnelEndpoint() const {return uL_Forwarding_GTPtunnelEndpoint.is_valid() ? &uL_Forwarding_GTPtunnelEndpoint : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_Admitted_ToBeAdded_Item_SCG_BearerExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(s1_DL_GTPtunnelEndpoint);
-               v(dL_Forwarding_GTPtunnelEndpoint);
-               v(uL_Forwarding_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(s1_DL_GTPtunnelEndpoint);
-               v(dL_Forwarding_GTPtunnelEndpoint);
-               v(uL_Forwarding_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               s1_DL_GTPtunnelEndpoint.clear();
-               dL_Forwarding_GTPtunnelEndpoint.clear();
-               uL_Forwarding_GTPtunnelEndpoint.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       s1_DL_GTPtunnelEndpoint_t       s1_DL_GTPtunnelEndpoint;
-       dL_Forwarding_GTPtunnelEndpoint_t       dL_Forwarding_GTPtunnelEndpoint;
-       uL_Forwarding_GTPtunnelEndpoint_t       uL_Forwarding_GTPtunnelEndpoint;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-Admitted-ToBeAdded-Item-Split-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-Admitted-ToBeAdded-Item-Split-Bearer ::= SEQUENCE {
-       e-RAB-ID                                                E-RAB-ID,
-       seNB-GTPtunnelEndpoint                  GTPtunnelEndpoint,
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-Admitted-ToBeAdded-Item-Split-BearerExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeAdded_Item_Split_Bearer : asn::sequence<3, 0, true, 1>
-{
-       static constexpr const char* name() {return "E-RABs-Admitted-ToBeAdded-Item-Split-Bearer";}
-       using parent_t = asn::sequence<3, 0, true, 1>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct seNB_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "seNB_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-
-       };
-       seNB_GTPtunnelEndpoint_t& ref_seNB_GTPtunnelEndpoint() {return seNB_GTPtunnelEndpoint;}
-       seNB_GTPtunnelEndpoint_t const& ref_seNB_GTPtunnelEndpoint() const {return seNB_GTPtunnelEndpoint;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_Admitted_ToBeAdded_Item_Split_BearerExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(seNB_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(seNB_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               seNB_GTPtunnelEndpoint.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       seNB_GTPtunnelEndpoint_t        seNB_GTPtunnelEndpoint;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-Admitted-ToBeAdded-Item ::= CHOICE {
-       sCG-Bearer              E-RABs-Admitted-ToBeAdded-Item-SCG-Bearer,
-       split-Bearer    E-RABs-Admitted-ToBeAdded-Item-Split-Bearer,
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeAdded_Item : asn::choice<2, 0, true>
-{
-       static constexpr const char* name() {return "E-RABs-Admitted-ToBeAdded-Item";}
-       using parent_t = asn::choice<2, 0, true>;
-       index_type get_index() const {return index;}
-       bool is_unknown() const {return index == 3;}
-       void set_unknown() { set_index(3);  }
-       ~E_RABs_Admitted_ToBeAdded_Item() {clear();}
-       struct sCG_Bearer_t : E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer
-       {
-               static constexpr const char* name() {return "sCG_Bearer_t";}
-               using parent_t = E_RABs_Admitted_ToBeAdded_Item_SCG_Bearer;
-
-       };
-       struct split_Bearer_t : E_RABs_Admitted_ToBeAdded_Item_Split_Bearer
-       {
-               static constexpr const char* name() {return "split_Bearer_t";}
-               using parent_t = E_RABs_Admitted_ToBeAdded_Item_Split_Bearer;
-
-       };
-       void clear()
-       {
-               switch(get_index())
-               {
-               case 1: var.destroy<sCG_Bearer_t>(); break;
-               case 2: var.destroy<split_Bearer_t>(); break;
-               }
-               index = 0;
-               base::clear();
-       }
-       template<typename V> bool decode(size_t idx, V& v)
-       {
-               clear();
-               switch(idx)
-               {
-               case 1: set_index(1); return v(var.build<sCG_Bearer_t>());
-               case 2: set_index(2); return v(var.build<split_Bearer_t>());
-               }
-               return false;
-
-       }
-       template<typename V> bool encode(V& v) const
-       {
-               switch(get_index())
-               {
-               case 1: return v(var.as<sCG_Bearer_t>());
-               case 2: return v(var.as<split_Bearer_t>());
-               }
-               return false;
-       }
-       template<typename V> static inline void enumerate(V& v)
-       {
-               v.template operator()<sCG_Bearer_t>(1);
-               v.template operator()<split_Bearer_t>(2);
-
-       }
-       sCG_Bearer_t& select_sCG_Bearer() { if(get_index() != 1) { clear(); set_index(1); return var.build<sCG_Bearer_t>();} return var.as<sCG_Bearer_t>();}
-       sCG_Bearer_t const* get_sCG_Bearer() const { if(get_index() == 1) { return &var.as<sCG_Bearer_t>();} return nullptr; }
-       split_Bearer_t& select_split_Bearer() { if(get_index() != 2) { clear(); set_index(2); return var.build<split_Bearer_t>();} return var.as<split_Bearer_t>();}
-       split_Bearer_t const* get_split_Bearer() const { if(get_index() == 2) { return &var.as<split_Bearer_t>();} return nullptr; }
-       private:
-       void set_index(index_type i) {index = i; base::set();}
-       union union_type
-       {
-               char dummy1[sizeof(sCG_Bearer_t)];
-               char dummy2[sizeof(split_Bearer_t)];
-
-       };
-       asn::variant<sizeof(union_type)>        var;
-       index_type      index {0};
-};
-/*
-E-RABs-Admitted-ToBeAdded-ItemIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-E-RABs-Admitted-ToBeAdded-Item  CRITICALITY ignore      TYPE E-RABs-Admitted-ToBeAdded-Item             PRESENCE mandatory}
-}
-*/
-
-struct E_RABs_Admitted_ToBeAdded_ItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_E_RABs_Admitted_ToBeAdded_Item() { set(id_E_RABs_Admitted_ToBeAdded_Item); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_E_RABs_Admitted_ToBeAdded_Item)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_E_RABs_Admitted_ToBeAdded_Item);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_E_RABs_Admitted_ToBeAdded_Item() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<false>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               E_RABs_Admitted_ToBeAdded_Item& select_id_E_RABs_Admitted_ToBeAdded_Item() { return set<E_RABs_Admitted_ToBeAdded_Item>(1); }
-               E_RABs_Admitted_ToBeAdded_Item const* get_id_E_RABs_Admitted_ToBeAdded_Item() const { return get<E_RABs_Admitted_ToBeAdded_Item>(1); }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<E_RABs_Admitted_ToBeAdded_Item>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<E_RABs_Admitted_ToBeAdded_Item>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_E_RABs_Admitted_ToBeAdded_Item()); return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<E_RABs_Admitted_ToBeAdded_Item>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(E_RABs_Admitted_ToBeAdded_Item)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_E_RABs_Admitted_ToBeAdded_Item() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-Admitted-ToBeAdded-List ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-Admitted-ToBeAdded-ItemIEs} }
-*/
-
-struct E_RABs_Admitted_ToBeAdded_List_elm : ProtocolIE_Single_Container<E_RABs_Admitted_ToBeAdded_ItemIEs>
-{
-       static constexpr const char* name() {return "E_RABs_Admitted_ToBeAdded_List_elm";}
-       using parent_t = ProtocolIE_Single_Container<E_RABs_Admitted_ToBeAdded_ItemIEs>;
-
-};
-struct E_RABs_Admitted_ToBeAdded_List : asn::sequenceof<E_RABs_Admitted_ToBeAdded_List_elm>
-{
-       static constexpr const char* name() {return "E-RABs-Admitted-ToBeAdded-List";}
-       using parent_t = asn::sequenceof<E_RABs_Admitted_ToBeAdded_List_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxnoofBearers >>;
-
-};
-/*
-E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-Bearer ::= SEQUENCE {
-       e-RAB-ID                                                                E-RAB-ID,
-       s1-DL-GTPtunnelEndpoint                                 GTPtunnelEndpoint,
-       dL-Forwarding-GTPtunnelEndpoint                 GTPtunnelEndpoint                                                                                                                                       OPTIONAL,
-       uL-Forwarding-GTPtunnelEndpoint                 GTPtunnelEndpoint                                                                                                                                       OPTIONAL,
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-BearerExtIEs} }  OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer : asn::sequence<5, 0, true, 3>
-{
-       static constexpr const char* name() {return "E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-Bearer";}
-       using parent_t = asn::sequence<5, 0, true, 3>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct s1_DL_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "s1_DL_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-
-       };
-       s1_DL_GTPtunnelEndpoint_t& ref_s1_DL_GTPtunnelEndpoint() {return s1_DL_GTPtunnelEndpoint;}
-       s1_DL_GTPtunnelEndpoint_t const& ref_s1_DL_GTPtunnelEndpoint() const {return s1_DL_GTPtunnelEndpoint;}
-       struct dL_Forwarding_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "dL_Forwarding_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       dL_Forwarding_GTPtunnelEndpoint_t& set_dL_Forwarding_GTPtunnelEndpoint() { dL_Forwarding_GTPtunnelEndpoint.setpresent(true); return dL_Forwarding_GTPtunnelEndpoint;}
-       dL_Forwarding_GTPtunnelEndpoint_t const* get_dL_Forwarding_GTPtunnelEndpoint() const {return dL_Forwarding_GTPtunnelEndpoint.is_valid() ? &dL_Forwarding_GTPtunnelEndpoint : nullptr;}
-       struct uL_Forwarding_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "uL_Forwarding_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       uL_Forwarding_GTPtunnelEndpoint_t& set_uL_Forwarding_GTPtunnelEndpoint() { uL_Forwarding_GTPtunnelEndpoint.setpresent(true); return uL_Forwarding_GTPtunnelEndpoint;}
-       uL_Forwarding_GTPtunnelEndpoint_t const* get_uL_Forwarding_GTPtunnelEndpoint() const {return uL_Forwarding_GTPtunnelEndpoint.is_valid() ? &uL_Forwarding_GTPtunnelEndpoint : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_BearerExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(s1_DL_GTPtunnelEndpoint);
-               v(dL_Forwarding_GTPtunnelEndpoint);
-               v(uL_Forwarding_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(s1_DL_GTPtunnelEndpoint);
-               v(dL_Forwarding_GTPtunnelEndpoint);
-               v(uL_Forwarding_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               s1_DL_GTPtunnelEndpoint.clear();
-               dL_Forwarding_GTPtunnelEndpoint.clear();
-               uL_Forwarding_GTPtunnelEndpoint.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       s1_DL_GTPtunnelEndpoint_t       s1_DL_GTPtunnelEndpoint;
-       dL_Forwarding_GTPtunnelEndpoint_t       dL_Forwarding_GTPtunnelEndpoint;
-       uL_Forwarding_GTPtunnelEndpoint_t       uL_Forwarding_GTPtunnelEndpoint;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-Admitted-ToBeAdded-ModAckItem-Split-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-Admitted-ToBeAdded-ModAckItem-Split-Bearer ::= SEQUENCE {
-       e-RAB-ID                                                E-RAB-ID,
-       seNB-GTPtunnelEndpoint                  GTPtunnelEndpoint,
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-Admitted-ToBeAdded-ModAckItem-Split-BearerExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer : asn::sequence<3, 0, true, 1>
-{
-       static constexpr const char* name() {return "E-RABs-Admitted-ToBeAdded-ModAckItem-Split-Bearer";}
-       using parent_t = asn::sequence<3, 0, true, 1>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct seNB_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "seNB_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-
-       };
-       seNB_GTPtunnelEndpoint_t& ref_seNB_GTPtunnelEndpoint() {return seNB_GTPtunnelEndpoint;}
-       seNB_GTPtunnelEndpoint_t const& ref_seNB_GTPtunnelEndpoint() const {return seNB_GTPtunnelEndpoint;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_Admitted_ToBeAdded_ModAckItem_Split_BearerExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(seNB_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(seNB_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               seNB_GTPtunnelEndpoint.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       seNB_GTPtunnelEndpoint_t        seNB_GTPtunnelEndpoint;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-Admitted-ToBeAdded-ModAckItem ::= CHOICE {
-       sCG-Bearer              E-RABs-Admitted-ToBeAdded-ModAckItem-SCG-Bearer,
-       split-Bearer    E-RABs-Admitted-ToBeAdded-ModAckItem-Split-Bearer,
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeAdded_ModAckItem : asn::choice<2, 0, true>
-{
-       static constexpr const char* name() {return "E-RABs-Admitted-ToBeAdded-ModAckItem";}
-       using parent_t = asn::choice<2, 0, true>;
-       index_type get_index() const {return index;}
-       bool is_unknown() const {return index == 3;}
-       void set_unknown() { set_index(3);  }
-       ~E_RABs_Admitted_ToBeAdded_ModAckItem() {clear();}
-       struct sCG_Bearer_t : E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer
-       {
-               static constexpr const char* name() {return "sCG_Bearer_t";}
-               using parent_t = E_RABs_Admitted_ToBeAdded_ModAckItem_SCG_Bearer;
-
-       };
-       struct split_Bearer_t : E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer
-       {
-               static constexpr const char* name() {return "split_Bearer_t";}
-               using parent_t = E_RABs_Admitted_ToBeAdded_ModAckItem_Split_Bearer;
-
-       };
-       void clear()
-       {
-               switch(get_index())
-               {
-               case 1: var.destroy<sCG_Bearer_t>(); break;
-               case 2: var.destroy<split_Bearer_t>(); break;
-               }
-               index = 0;
-               base::clear();
-       }
-       template<typename V> bool decode(size_t idx, V& v)
-       {
-               clear();
-               switch(idx)
-               {
-               case 1: set_index(1); return v(var.build<sCG_Bearer_t>());
-               case 2: set_index(2); return v(var.build<split_Bearer_t>());
-               }
-               return false;
-
-       }
-       template<typename V> bool encode(V& v) const
-       {
-               switch(get_index())
-               {
-               case 1: return v(var.as<sCG_Bearer_t>());
-               case 2: return v(var.as<split_Bearer_t>());
-               }
-               return false;
-       }
-       template<typename V> static inline void enumerate(V& v)
-       {
-               v.template operator()<sCG_Bearer_t>(1);
-               v.template operator()<split_Bearer_t>(2);
-
-       }
-       sCG_Bearer_t& select_sCG_Bearer() { if(get_index() != 1) { clear(); set_index(1); return var.build<sCG_Bearer_t>();} return var.as<sCG_Bearer_t>();}
-       sCG_Bearer_t const* get_sCG_Bearer() const { if(get_index() == 1) { return &var.as<sCG_Bearer_t>();} return nullptr; }
-       split_Bearer_t& select_split_Bearer() { if(get_index() != 2) { clear(); set_index(2); return var.build<split_Bearer_t>();} return var.as<split_Bearer_t>();}
-       split_Bearer_t const* get_split_Bearer() const { if(get_index() == 2) { return &var.as<split_Bearer_t>();} return nullptr; }
-       private:
-       void set_index(index_type i) {index = i; base::set();}
-       union union_type
-       {
-               char dummy1[sizeof(sCG_Bearer_t)];
-               char dummy2[sizeof(split_Bearer_t)];
-
-       };
-       asn::variant<sizeof(union_type)>        var;
-       index_type      index {0};
-};
-/*
-E-RABs-Admitted-ToBeAdded-ModAckItemIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-E-RABs-Admitted-ToBeAdded-ModAckItem    CRITICALITY ignore      TYPE E-RABs-Admitted-ToBeAdded-ModAckItem               PRESENCE mandatory}
-}
-*/
-
-struct E_RABs_Admitted_ToBeAdded_ModAckItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_E_RABs_Admitted_ToBeAdded_ModAckItem() { set(id_E_RABs_Admitted_ToBeAdded_ModAckItem); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_E_RABs_Admitted_ToBeAdded_ModAckItem)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_E_RABs_Admitted_ToBeAdded_ModAckItem);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_E_RABs_Admitted_ToBeAdded_ModAckItem() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<false>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               E_RABs_Admitted_ToBeAdded_ModAckItem& select_id_E_RABs_Admitted_ToBeAdded_ModAckItem() { return set<E_RABs_Admitted_ToBeAdded_ModAckItem>(1); }
-               E_RABs_Admitted_ToBeAdded_ModAckItem const* get_id_E_RABs_Admitted_ToBeAdded_ModAckItem() const { return get<E_RABs_Admitted_ToBeAdded_ModAckItem>(1); }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<E_RABs_Admitted_ToBeAdded_ModAckItem>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<E_RABs_Admitted_ToBeAdded_ModAckItem>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_E_RABs_Admitted_ToBeAdded_ModAckItem()); return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<E_RABs_Admitted_ToBeAdded_ModAckItem>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(E_RABs_Admitted_ToBeAdded_ModAckItem)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_E_RABs_Admitted_ToBeAdded_ModAckItem() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-Admitted-ToBeAdded-ModAckList ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-Admitted-ToBeAdded-ModAckItemIEs} }
-*/
-
-struct E_RABs_Admitted_ToBeAdded_ModAckList_elm : ProtocolIE_Single_Container<E_RABs_Admitted_ToBeAdded_ModAckItemIEs>
-{
-       static constexpr const char* name() {return "E_RABs_Admitted_ToBeAdded_ModAckList_elm";}
-       using parent_t = ProtocolIE_Single_Container<E_RABs_Admitted_ToBeAdded_ModAckItemIEs>;
-
-};
-struct E_RABs_Admitted_ToBeAdded_ModAckList : asn::sequenceof<E_RABs_Admitted_ToBeAdded_ModAckList_elm>
-{
-       static constexpr const char* name() {return "E-RABs-Admitted-ToBeAdded-ModAckList";}
-       using parent_t = asn::sequenceof<E_RABs_Admitted_ToBeAdded_ModAckList_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxnoofBearers >>;
-
-};
-/*
-E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       { ID id-uLpDCPSnLength                                                  CRITICALITY ignore      EXTENSION PDCPSnLength                                  PRESENCE optional}|
-       { ID id-dLPDCPSnLength                                                  CRITICALITY ignore      EXTENSION PDCPSnLength                                  PRESENCE optional},
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_uLpDCPSnLength() { set(id_uLpDCPSnLength); type=1;}
-               void select_id_dLPDCPSnLength() { set(id_dLPDCPSnLength); type=2;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_uLpDCPSnLength)) { type = 1; return true; }
-                       else if(equal(id_dLPDCPSnLength)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_uLpDCPSnLength);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_dLPDCPSnLength);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_uLpDCPSnLength() { set(ignore); type=1;}
-               void select_id_dLPDCPSnLength() { set(ignore); type=2;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               PDCPSnLength& select_id_uLpDCPSnLength() { return set<PDCPSnLength>(1); }
-               PDCPSnLength const* get_id_uLpDCPSnLength() const { return get<PDCPSnLength>(1); }
-               PDCPSnLength& select_id_dLPDCPSnLength() { return set<PDCPSnLength>(2); }
-               PDCPSnLength const* get_id_dLPDCPSnLength() const { return get<PDCPSnLength>(2); }
-               bool is_unknown() const { return type == 3; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<PDCPSnLength>(); break;
-                       case 2: var.destroy<PDCPSnLength>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<PDCPSnLength>(1);
-                       v.template operator()<PDCPSnLength>(2);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_uLpDCPSnLength()); return true;
-                       case 2: v(select_id_dLPDCPSnLength()); return true;
-                       case 3: if(type != 3) {clear(); asn::base::set();} type = 3; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<PDCPSnLength>()); return true;
-                       case 2: v(var.as<PDCPSnLength>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(PDCPSnLength)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_uLpDCPSnLength() { set(optional); type=1;}
-               void select_id_dLPDCPSnLength() { set(optional); type=2;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(optional)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresent ::= SEQUENCE {
-       s1-DL-GTPtunnelEndpoint                                 GTPtunnelEndpoint,
-       sgNB-UL-GTP-TEIDatPDCP                                  GTPtunnelEndpoint                                                                                                                                                                               OPTIONAL,
--- This IE shall be present if MCG resource IE in the the EN-DC Resource Configuration IE is set to “present” --
-       rlc-Mode                                                                RLCMode                                                                                                                                                                                                 OPTIONAL,
--- This IE shall be present if MCG resource IE in the the EN-DC Resource Configuration IE is set to “present” --
-       dL-Forwarding-GTPtunnelEndpoint                 GTPtunnelEndpoint                                                                                                                                                                               OPTIONAL,
-       uL-Forwarding-GTPtunnelEndpoint                 GTPtunnelEndpoint                                                                                                                                                                               OPTIONAL,
-       mCG-E-RAB-Level-QoS-Parameters                  E-RAB-Level-QoS-Parameters                                                                                                                                                              OPTIONAL,
--- This IE shall be present if MCG resource and SCG resource IEs in the the EN-DC Resource Configuration IE are set to “present” and the GBR QoS Information IE is present in the Requested MCG E-RAB Level QoS Parameters IE --
-       uL-Configuration                                                        ULConfiguration                                                                                                                                                                                 OPTIONAL,
--- This IE shall be present if MCG resource and SCG resources IEs in the the EN-DC Resource Configuration IE are set to “present” --
-       iE-Extensions                                                   ProtocolExtensionContainer { {E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresentExtIEs} }                     OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent : asn::sequence<8, 0, true, 7>
-{
-       static constexpr const char* name() {return "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresent";}
-       using parent_t = asn::sequence<8, 0, true, 7>;
-       struct s1_DL_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "s1_DL_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-
-       };
-       s1_DL_GTPtunnelEndpoint_t& ref_s1_DL_GTPtunnelEndpoint() {return s1_DL_GTPtunnelEndpoint;}
-       s1_DL_GTPtunnelEndpoint_t const& ref_s1_DL_GTPtunnelEndpoint() const {return s1_DL_GTPtunnelEndpoint;}
-       struct sgNB_UL_GTP_TEIDatPDCP_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "sgNB_UL_GTP_TEIDatPDCP_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       sgNB_UL_GTP_TEIDatPDCP_t& set_sgNB_UL_GTP_TEIDatPDCP() { sgNB_UL_GTP_TEIDatPDCP.setpresent(true); return sgNB_UL_GTP_TEIDatPDCP;}
-       sgNB_UL_GTP_TEIDatPDCP_t const* get_sgNB_UL_GTP_TEIDatPDCP() const {return sgNB_UL_GTP_TEIDatPDCP.is_valid() ? &sgNB_UL_GTP_TEIDatPDCP : nullptr;}
-       struct rlc_Mode_t : RLCMode
-       {
-               static constexpr const char* name() {return "rlc_Mode_t";}
-               using parent_t = RLCMode;
-               static constexpr bool optional = true;
-
-       };
-       rlc_Mode_t& set_rlc_Mode() { rlc_Mode.setpresent(true); return rlc_Mode;}
-       rlc_Mode_t const* get_rlc_Mode() const {return rlc_Mode.is_valid() ? &rlc_Mode : nullptr;}
-       struct dL_Forwarding_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "dL_Forwarding_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       dL_Forwarding_GTPtunnelEndpoint_t& set_dL_Forwarding_GTPtunnelEndpoint() { dL_Forwarding_GTPtunnelEndpoint.setpresent(true); return dL_Forwarding_GTPtunnelEndpoint;}
-       dL_Forwarding_GTPtunnelEndpoint_t const* get_dL_Forwarding_GTPtunnelEndpoint() const {return dL_Forwarding_GTPtunnelEndpoint.is_valid() ? &dL_Forwarding_GTPtunnelEndpoint : nullptr;}
-       struct uL_Forwarding_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "uL_Forwarding_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       uL_Forwarding_GTPtunnelEndpoint_t& set_uL_Forwarding_GTPtunnelEndpoint() { uL_Forwarding_GTPtunnelEndpoint.setpresent(true); return uL_Forwarding_GTPtunnelEndpoint;}
-       uL_Forwarding_GTPtunnelEndpoint_t const* get_uL_Forwarding_GTPtunnelEndpoint() const {return uL_Forwarding_GTPtunnelEndpoint.is_valid() ? &uL_Forwarding_GTPtunnelEndpoint : nullptr;}
-       struct mCG_E_RAB_Level_QoS_Parameters_t : E_RAB_Level_QoS_Parameters
-       {
-               static constexpr const char* name() {return "mCG_E_RAB_Level_QoS_Parameters_t";}
-               using parent_t = E_RAB_Level_QoS_Parameters;
-               static constexpr bool optional = true;
-
-       };
-       mCG_E_RAB_Level_QoS_Parameters_t& set_mCG_E_RAB_Level_QoS_Parameters() { mCG_E_RAB_Level_QoS_Parameters.setpresent(true); return mCG_E_RAB_Level_QoS_Parameters;}
-       mCG_E_RAB_Level_QoS_Parameters_t const* get_mCG_E_RAB_Level_QoS_Parameters() const {return mCG_E_RAB_Level_QoS_Parameters.is_valid() ? &mCG_E_RAB_Level_QoS_Parameters : nullptr;}
-       struct uL_Configuration_t : ULConfiguration
-       {
-               static constexpr const char* name() {return "uL_Configuration_t";}
-               using parent_t = ULConfiguration;
-               static constexpr bool optional = true;
-
-       };
-       uL_Configuration_t& set_uL_Configuration() { uL_Configuration.setpresent(true); return uL_Configuration;}
-       uL_Configuration_t const* get_uL_Configuration() const {return uL_Configuration.is_valid() ? &uL_Configuration : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresentExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(s1_DL_GTPtunnelEndpoint);
-               v(sgNB_UL_GTP_TEIDatPDCP);
-               v(rlc_Mode);
-               v(dL_Forwarding_GTPtunnelEndpoint);
-               v(uL_Forwarding_GTPtunnelEndpoint);
-               v(mCG_E_RAB_Level_QoS_Parameters);
-               v(uL_Configuration);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(s1_DL_GTPtunnelEndpoint);
-               v(sgNB_UL_GTP_TEIDatPDCP);
-               v(rlc_Mode);
-               v(dL_Forwarding_GTPtunnelEndpoint);
-               v(uL_Forwarding_GTPtunnelEndpoint);
-               v(mCG_E_RAB_Level_QoS_Parameters);
-               v(uL_Configuration);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               s1_DL_GTPtunnelEndpoint.clear();
-               sgNB_UL_GTP_TEIDatPDCP.clear();
-               rlc_Mode.clear();
-               dL_Forwarding_GTPtunnelEndpoint.clear();
-               uL_Forwarding_GTPtunnelEndpoint.clear();
-               mCG_E_RAB_Level_QoS_Parameters.clear();
-               uL_Configuration.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       s1_DL_GTPtunnelEndpoint_t       s1_DL_GTPtunnelEndpoint;
-       sgNB_UL_GTP_TEIDatPDCP_t        sgNB_UL_GTP_TEIDatPDCP;
-       rlc_Mode_t      rlc_Mode;
-       dL_Forwarding_GTPtunnelEndpoint_t       dL_Forwarding_GTPtunnelEndpoint;
-       uL_Forwarding_GTPtunnelEndpoint_t       uL_Forwarding_GTPtunnelEndpoint;
-       mCG_E_RAB_Level_QoS_Parameters_t        mCG_E_RAB_Level_QoS_Parameters;
-       uL_Configuration_t      uL_Configuration;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       { ID id-lCID                            CRITICALITY ignore      EXTENSION LCID                  PRESENCE optional},
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_lCID() { set(id_lCID); type=1;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_lCID)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_lCID);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_lCID() { set(ignore); type=1;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               LCID& select_id_lCID() { return set<LCID>(1); }
-               LCID const* get_id_lCID() const { return get<LCID>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<LCID>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<LCID>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_lCID()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<LCID>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(LCID)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_lCID() { set(optional); type=1;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(optional)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresent ::= SEQUENCE {
-       sgNB-DL-GTP-TEIDatSCG                           GTPtunnelEndpoint,
-       secondary-sgNB-DL-GTP-TEIDatSCG         GTPtunnelEndpoint               OPTIONAL,
-       iE-Extensions                                           ProtocolExtensionContainer { {E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresentExtIEs} }          OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent : asn::sequence<3, 0, true, 2>
-{
-       static constexpr const char* name() {return "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresent";}
-       using parent_t = asn::sequence<3, 0, true, 2>;
-       struct sgNB_DL_GTP_TEIDatSCG_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "sgNB_DL_GTP_TEIDatSCG_t";}
-               using parent_t = GTPtunnelEndpoint;
-
-       };
-       sgNB_DL_GTP_TEIDatSCG_t& ref_sgNB_DL_GTP_TEIDatSCG() {return sgNB_DL_GTP_TEIDatSCG;}
-       sgNB_DL_GTP_TEIDatSCG_t const& ref_sgNB_DL_GTP_TEIDatSCG() const {return sgNB_DL_GTP_TEIDatSCG;}
-       struct secondary_sgNB_DL_GTP_TEIDatSCG_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "secondary_sgNB_DL_GTP_TEIDatSCG_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       secondary_sgNB_DL_GTP_TEIDatSCG_t& set_secondary_sgNB_DL_GTP_TEIDatSCG() { secondary_sgNB_DL_GTP_TEIDatSCG.setpresent(true); return secondary_sgNB_DL_GTP_TEIDatSCG;}
-       secondary_sgNB_DL_GTP_TEIDatSCG_t const* get_secondary_sgNB_DL_GTP_TEIDatSCG() const {return secondary_sgNB_DL_GTP_TEIDatSCG.is_valid() ? &secondary_sgNB_DL_GTP_TEIDatSCG : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresentExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(sgNB_DL_GTP_TEIDatSCG);
-               v(secondary_sgNB_DL_GTP_TEIDatSCG);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(sgNB_DL_GTP_TEIDatSCG);
-               v(secondary_sgNB_DL_GTP_TEIDatSCG);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               sgNB_DL_GTP_TEIDatSCG.clear();
-               secondary_sgNB_DL_GTP_TEIDatSCG.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       sgNB_DL_GTP_TEIDatSCG_t sgNB_DL_GTP_TEIDatSCG;
-       secondary_sgNB_DL_GTP_TEIDatSCG_t       secondary_sgNB_DL_GTP_TEIDatSCG;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeAdded-SgNBAddReqAck-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item ::= SEQUENCE {
-       e-RAB-ID                                                                E-RAB-ID,
-       en-DC-ResourceConfiguration                     EN-DC-ResourceConfiguration,
-       resource-configuration                          CHOICE {
-               sgNBPDCPpresent                                         E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPpresent,
-               sgNBPDCPnotpresent                                      E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item-SgNBPDCPnotpresent,
-               ...
-       },
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeAdded-SgNBAddReqAck-ItemExtIEs} }      OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item : asn::sequence<4, 0, true, 1>
-{
-       static constexpr const char* name() {return "E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item";}
-       using parent_t = asn::sequence<4, 0, true, 1>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct en_DC_ResourceConfiguration_t : EN_DC_ResourceConfiguration
-       {
-               static constexpr const char* name() {return "en_DC_ResourceConfiguration_t";}
-               using parent_t = EN_DC_ResourceConfiguration;
-
-       };
-       en_DC_ResourceConfiguration_t& ref_en_DC_ResourceConfiguration() {return en_DC_ResourceConfiguration;}
-       en_DC_ResourceConfiguration_t const& ref_en_DC_ResourceConfiguration() const {return en_DC_ResourceConfiguration;}
-       struct resource_configuration_t : asn::choice<2, 0, true>
-       {
-               static constexpr const char* name() {return "resource_configuration_t";}
-               using parent_t = asn::choice<2, 0, true>;
-               index_type get_index() const {return index;}
-               bool is_unknown() const {return index == 3;}
-               void set_unknown() { set_index(3);  }
-               ~resource_configuration_t() {clear();}
-               struct sgNBPDCPpresent_t : E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent
-               {
-                       static constexpr const char* name() {return "sgNBPDCPpresent_t";}
-                       using parent_t = E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPpresent;
-
-               };
-               struct sgNBPDCPnotpresent_t : E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent
-               {
-                       static constexpr const char* name() {return "sgNBPDCPnotpresent_t";}
-                       using parent_t = E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item_SgNBPDCPnotpresent;
-
-               };
-               void clear()
-               {
-                       switch(get_index())
-                       {
-                       case 1: var.destroy<sgNBPDCPpresent_t>(); break;
-                       case 2: var.destroy<sgNBPDCPnotpresent_t>(); break;
-                       }
-                       index = 0;
-                       base::clear();
-               }
-               template<typename V> bool decode(size_t idx, V& v)
-               {
-                       clear();
-                       switch(idx)
-                       {
-                       case 1: set_index(1); return v(var.build<sgNBPDCPpresent_t>());
-                       case 2: set_index(2); return v(var.build<sgNBPDCPnotpresent_t>());
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       switch(get_index())
-                       {
-                       case 1: return v(var.as<sgNBPDCPpresent_t>());
-                       case 2: return v(var.as<sgNBPDCPnotpresent_t>());
-                       }
-                       return false;
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<sgNBPDCPpresent_t>(1);
-                       v.template operator()<sgNBPDCPnotpresent_t>(2);
-
-               }
-               sgNBPDCPpresent_t& select_sgNBPDCPpresent() { if(get_index() != 1) { clear(); set_index(1); return var.build<sgNBPDCPpresent_t>();} return var.as<sgNBPDCPpresent_t>();}
-               sgNBPDCPpresent_t const* get_sgNBPDCPpresent() const { if(get_index() == 1) { return &var.as<sgNBPDCPpresent_t>();} return nullptr; }
-               sgNBPDCPnotpresent_t& select_sgNBPDCPnotpresent() { if(get_index() != 2) { clear(); set_index(2); return var.build<sgNBPDCPnotpresent_t>();} return var.as<sgNBPDCPnotpresent_t>();}
-               sgNBPDCPnotpresent_t const* get_sgNBPDCPnotpresent() const { if(get_index() == 2) { return &var.as<sgNBPDCPnotpresent_t>();} return nullptr; }
-               private:
-               void set_index(index_type i) {index = i; base::set();}
-               union union_type
-               {
-                       char dummy1[sizeof(sgNBPDCPpresent_t)];
-                       char dummy2[sizeof(sgNBPDCPnotpresent_t)];
-
-               };
-               asn::variant<sizeof(union_type)>        var;
-               index_type      index {0};
-       };
-       resource_configuration_t& ref_resource_configuration() {return resource_configuration;}
-       resource_configuration_t const& ref_resource_configuration() const {return resource_configuration;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeAdded_SgNBAddReqAck_ItemExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(en_DC_ResourceConfiguration);
-               v(resource_configuration);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(en_DC_ResourceConfiguration);
-               v(resource_configuration);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               en_DC_ResourceConfiguration.clear();
-               resource_configuration.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       en_DC_ResourceConfiguration_t   en_DC_ResourceConfiguration;
-       resource_configuration_t        resource_configuration;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-ItemIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item    CRITICALITY ignore      TYPE E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-Item               PRESENCE mandatory}
-}
-*/
-
-struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item() { set(id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<false>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item& select_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item() { return set<E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item>(1); }
-               E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item const* get_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item() const { return get<E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item>(1); }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item()); return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_Item() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-Admitted-ToBeAdded-SgNBAddReqAck-ItemIEs} }
-*/
-
-struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_elm : ProtocolIE_Single_Container<E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs>
-{
-       static constexpr const char* name() {return "E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_elm";}
-       using parent_t = ProtocolIE_Single_Container<E_RABs_Admitted_ToBeAdded_SgNBAddReqAck_ItemIEs>;
-
-};
-struct E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList : asn::sequenceof<E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_elm>
-{
-       static constexpr const char* name() {return "E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList";}
-       using parent_t = asn::sequenceof<E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxnoofBearers >>;
-
-};
-/*
-E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       { ID id-uLpDCPSnLength                                                  CRITICALITY ignore      EXTENSION PDCPSnLength                                  PRESENCE optional}|
-       { ID id-dLPDCPSnLength                                                  CRITICALITY ignore      EXTENSION PDCPSnLength                                  PRESENCE optional},
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_uLpDCPSnLength() { set(id_uLpDCPSnLength); type=1;}
-               void select_id_dLPDCPSnLength() { set(id_dLPDCPSnLength); type=2;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_uLpDCPSnLength)) { type = 1; return true; }
-                       else if(equal(id_dLPDCPSnLength)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_uLpDCPSnLength);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_dLPDCPSnLength);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_uLpDCPSnLength() { set(ignore); type=1;}
-               void select_id_dLPDCPSnLength() { set(ignore); type=2;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               PDCPSnLength& select_id_uLpDCPSnLength() { return set<PDCPSnLength>(1); }
-               PDCPSnLength const* get_id_uLpDCPSnLength() const { return get<PDCPSnLength>(1); }
-               PDCPSnLength& select_id_dLPDCPSnLength() { return set<PDCPSnLength>(2); }
-               PDCPSnLength const* get_id_dLPDCPSnLength() const { return get<PDCPSnLength>(2); }
-               bool is_unknown() const { return type == 3; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<PDCPSnLength>(); break;
-                       case 2: var.destroy<PDCPSnLength>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<PDCPSnLength>(1);
-                       v.template operator()<PDCPSnLength>(2);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_uLpDCPSnLength()); return true;
-                       case 2: v(select_id_dLPDCPSnLength()); return true;
-                       case 3: if(type != 3) {clear(); asn::base::set();} type = 3; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<PDCPSnLength>()); return true;
-                       case 2: v(var.as<PDCPSnLength>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(PDCPSnLength)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_uLpDCPSnLength() { set(optional); type=1;}
-               void select_id_dLPDCPSnLength() { set(optional); type=2;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(optional)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresent ::= SEQUENCE {
-       s1-DL-GTPtunnelEndpoint                                 GTPtunnelEndpoint,
-       sgNB-UL-GTP-TEIDatPDCP                                  GTPtunnelEndpoint                                                                                                                                                                       OPTIONAL,
--- This IE shall be present if MCG resource IE in the the EN-DC Resource Configuration IE are set to “present” --
-       rlc-Mode                                                                        RLCMode                                                                                                                                                                                         OPTIONAL,
--- This IE shall be present if MCG resource IE in the the EN-DC Resource Configuration IE are set to “present” --
-       dL-Forwarding-GTPtunnelEndpoint                 GTPtunnelEndpoint                                                                                                                                                                       OPTIONAL,
-       uL-Forwarding-GTPtunnelEndpoint                 GTPtunnelEndpoint                                                                                                                                                                       OPTIONAL,
-       mCG-E-RAB-Level-QoS-Parameters                  E-RAB-Level-QoS-Parameters                                                                                                                                                      OPTIONAL,
--- This IE shall be present if MCG resource and SCG resource IEs in the the EN-DC Resource Configuration IE are set to “present” and the GBR QoS Information IE is present in the Requested MCG E-RAB Level QoS Parameters IE --
-       uL-Configuration                                                ULConfiguration                                                                                                                                                                                 OPTIONAL,
--- This IE shall be present if MCG resource and SCG resources IEs in the the EN-DC Resource Configuration IE are set to “present” --
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresentExtIEs} }                OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent : asn::sequence<8, 0, true, 7>
-{
-       static constexpr const char* name() {return "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresent";}
-       using parent_t = asn::sequence<8, 0, true, 7>;
-       struct s1_DL_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "s1_DL_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-
-       };
-       s1_DL_GTPtunnelEndpoint_t& ref_s1_DL_GTPtunnelEndpoint() {return s1_DL_GTPtunnelEndpoint;}
-       s1_DL_GTPtunnelEndpoint_t const& ref_s1_DL_GTPtunnelEndpoint() const {return s1_DL_GTPtunnelEndpoint;}
-       struct sgNB_UL_GTP_TEIDatPDCP_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "sgNB_UL_GTP_TEIDatPDCP_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       sgNB_UL_GTP_TEIDatPDCP_t& set_sgNB_UL_GTP_TEIDatPDCP() { sgNB_UL_GTP_TEIDatPDCP.setpresent(true); return sgNB_UL_GTP_TEIDatPDCP;}
-       sgNB_UL_GTP_TEIDatPDCP_t const* get_sgNB_UL_GTP_TEIDatPDCP() const {return sgNB_UL_GTP_TEIDatPDCP.is_valid() ? &sgNB_UL_GTP_TEIDatPDCP : nullptr;}
-       struct rlc_Mode_t : RLCMode
-       {
-               static constexpr const char* name() {return "rlc_Mode_t";}
-               using parent_t = RLCMode;
-               static constexpr bool optional = true;
-
-       };
-       rlc_Mode_t& set_rlc_Mode() { rlc_Mode.setpresent(true); return rlc_Mode;}
-       rlc_Mode_t const* get_rlc_Mode() const {return rlc_Mode.is_valid() ? &rlc_Mode : nullptr;}
-       struct dL_Forwarding_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "dL_Forwarding_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       dL_Forwarding_GTPtunnelEndpoint_t& set_dL_Forwarding_GTPtunnelEndpoint() { dL_Forwarding_GTPtunnelEndpoint.setpresent(true); return dL_Forwarding_GTPtunnelEndpoint;}
-       dL_Forwarding_GTPtunnelEndpoint_t const* get_dL_Forwarding_GTPtunnelEndpoint() const {return dL_Forwarding_GTPtunnelEndpoint.is_valid() ? &dL_Forwarding_GTPtunnelEndpoint : nullptr;}
-       struct uL_Forwarding_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "uL_Forwarding_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       uL_Forwarding_GTPtunnelEndpoint_t& set_uL_Forwarding_GTPtunnelEndpoint() { uL_Forwarding_GTPtunnelEndpoint.setpresent(true); return uL_Forwarding_GTPtunnelEndpoint;}
-       uL_Forwarding_GTPtunnelEndpoint_t const* get_uL_Forwarding_GTPtunnelEndpoint() const {return uL_Forwarding_GTPtunnelEndpoint.is_valid() ? &uL_Forwarding_GTPtunnelEndpoint : nullptr;}
-       struct mCG_E_RAB_Level_QoS_Parameters_t : E_RAB_Level_QoS_Parameters
-       {
-               static constexpr const char* name() {return "mCG_E_RAB_Level_QoS_Parameters_t";}
-               using parent_t = E_RAB_Level_QoS_Parameters;
-               static constexpr bool optional = true;
-
-       };
-       mCG_E_RAB_Level_QoS_Parameters_t& set_mCG_E_RAB_Level_QoS_Parameters() { mCG_E_RAB_Level_QoS_Parameters.setpresent(true); return mCG_E_RAB_Level_QoS_Parameters;}
-       mCG_E_RAB_Level_QoS_Parameters_t const* get_mCG_E_RAB_Level_QoS_Parameters() const {return mCG_E_RAB_Level_QoS_Parameters.is_valid() ? &mCG_E_RAB_Level_QoS_Parameters : nullptr;}
-       struct uL_Configuration_t : ULConfiguration
-       {
-               static constexpr const char* name() {return "uL_Configuration_t";}
-               using parent_t = ULConfiguration;
-               static constexpr bool optional = true;
-
-       };
-       uL_Configuration_t& set_uL_Configuration() { uL_Configuration.setpresent(true); return uL_Configuration;}
-       uL_Configuration_t const* get_uL_Configuration() const {return uL_Configuration.is_valid() ? &uL_Configuration : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresentExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(s1_DL_GTPtunnelEndpoint);
-               v(sgNB_UL_GTP_TEIDatPDCP);
-               v(rlc_Mode);
-               v(dL_Forwarding_GTPtunnelEndpoint);
-               v(uL_Forwarding_GTPtunnelEndpoint);
-               v(mCG_E_RAB_Level_QoS_Parameters);
-               v(uL_Configuration);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(s1_DL_GTPtunnelEndpoint);
-               v(sgNB_UL_GTP_TEIDatPDCP);
-               v(rlc_Mode);
-               v(dL_Forwarding_GTPtunnelEndpoint);
-               v(uL_Forwarding_GTPtunnelEndpoint);
-               v(mCG_E_RAB_Level_QoS_Parameters);
-               v(uL_Configuration);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               s1_DL_GTPtunnelEndpoint.clear();
-               sgNB_UL_GTP_TEIDatPDCP.clear();
-               rlc_Mode.clear();
-               dL_Forwarding_GTPtunnelEndpoint.clear();
-               uL_Forwarding_GTPtunnelEndpoint.clear();
-               mCG_E_RAB_Level_QoS_Parameters.clear();
-               uL_Configuration.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       s1_DL_GTPtunnelEndpoint_t       s1_DL_GTPtunnelEndpoint;
-       sgNB_UL_GTP_TEIDatPDCP_t        sgNB_UL_GTP_TEIDatPDCP;
-       rlc_Mode_t      rlc_Mode;
-       dL_Forwarding_GTPtunnelEndpoint_t       dL_Forwarding_GTPtunnelEndpoint;
-       uL_Forwarding_GTPtunnelEndpoint_t       uL_Forwarding_GTPtunnelEndpoint;
-       mCG_E_RAB_Level_QoS_Parameters_t        mCG_E_RAB_Level_QoS_Parameters;
-       uL_Configuration_t      uL_Configuration;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       {ID id-lCID                             CRITICALITY ignore      EXTENSION LCID          PRESENCE optional},
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_lCID() { set(id_lCID); type=1;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_lCID)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_lCID);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_lCID() { set(ignore); type=1;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               LCID& select_id_lCID() { return set<LCID>(1); }
-               LCID const* get_id_lCID() const { return get<LCID>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<LCID>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<LCID>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_lCID()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<LCID>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(LCID)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_lCID() { set(optional); type=1;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(optional)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresent ::= SEQUENCE {
-       sgNB-DL-GTP-TEIDatSCG                                   GTPtunnelEndpoint,
-       secondary-sgNB-DL-GTP-TEIDatSCG                 GTPtunnelEndpoint                       OPTIONAL,
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresentExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent : asn::sequence<3, 0, true, 2>
-{
-       static constexpr const char* name() {return "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresent";}
-       using parent_t = asn::sequence<3, 0, true, 2>;
-       struct sgNB_DL_GTP_TEIDatSCG_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "sgNB_DL_GTP_TEIDatSCG_t";}
-               using parent_t = GTPtunnelEndpoint;
-
-       };
-       sgNB_DL_GTP_TEIDatSCG_t& ref_sgNB_DL_GTP_TEIDatSCG() {return sgNB_DL_GTP_TEIDatSCG;}
-       sgNB_DL_GTP_TEIDatSCG_t const& ref_sgNB_DL_GTP_TEIDatSCG() const {return sgNB_DL_GTP_TEIDatSCG;}
-       struct secondary_sgNB_DL_GTP_TEIDatSCG_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "secondary_sgNB_DL_GTP_TEIDatSCG_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       secondary_sgNB_DL_GTP_TEIDatSCG_t& set_secondary_sgNB_DL_GTP_TEIDatSCG() { secondary_sgNB_DL_GTP_TEIDatSCG.setpresent(true); return secondary_sgNB_DL_GTP_TEIDatSCG;}
-       secondary_sgNB_DL_GTP_TEIDatSCG_t const* get_secondary_sgNB_DL_GTP_TEIDatSCG() const {return secondary_sgNB_DL_GTP_TEIDatSCG.is_valid() ? &secondary_sgNB_DL_GTP_TEIDatSCG : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(sgNB_DL_GTP_TEIDatSCG);
-               v(secondary_sgNB_DL_GTP_TEIDatSCG);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(sgNB_DL_GTP_TEIDatSCG);
-               v(secondary_sgNB_DL_GTP_TEIDatSCG);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               sgNB_DL_GTP_TEIDatSCG.clear();
-               secondary_sgNB_DL_GTP_TEIDatSCG.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       sgNB_DL_GTP_TEIDatSCG_t sgNB_DL_GTP_TEIDatSCG;
-       secondary_sgNB_DL_GTP_TEIDatSCG_t       secondary_sgNB_DL_GTP_TEIDatSCG;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-Admitted-ToBeAdded-SgNBModAck-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-Admitted-ToBeAdded-SgNBModAck-Item ::= SEQUENCE {
-       e-RAB-ID                                                                E-RAB-ID,
-       en-DC-ResourceConfiguration                     EN-DC-ResourceConfiguration,
-       resource-configuration                          CHOICE {
-               sgNBPDCPpresent                                         E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPpresent,
-               sgNBPDCPnotpresent                                      E-RABs-Admitted-ToBeAdded-SgNBModAck-Item-SgNBPDCPnotpresent,
-               ...
-       },
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-Admitted-ToBeAdded-SgNBModAck-ItemExtIEs} }        OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeAdded_SgNBModAck_Item : asn::sequence<4, 0, true, 1>
-{
-       static constexpr const char* name() {return "E-RABs-Admitted-ToBeAdded-SgNBModAck-Item";}
-       using parent_t = asn::sequence<4, 0, true, 1>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct en_DC_ResourceConfiguration_t : EN_DC_ResourceConfiguration
-       {
-               static constexpr const char* name() {return "en_DC_ResourceConfiguration_t";}
-               using parent_t = EN_DC_ResourceConfiguration;
-
-       };
-       en_DC_ResourceConfiguration_t& ref_en_DC_ResourceConfiguration() {return en_DC_ResourceConfiguration;}
-       en_DC_ResourceConfiguration_t const& ref_en_DC_ResourceConfiguration() const {return en_DC_ResourceConfiguration;}
-       struct resource_configuration_t : asn::choice<2, 0, true>
-       {
-               static constexpr const char* name() {return "resource_configuration_t";}
-               using parent_t = asn::choice<2, 0, true>;
-               index_type get_index() const {return index;}
-               bool is_unknown() const {return index == 3;}
-               void set_unknown() { set_index(3);  }
-               ~resource_configuration_t() {clear();}
-               struct sgNBPDCPpresent_t : E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent
-               {
-                       static constexpr const char* name() {return "sgNBPDCPpresent_t";}
-                       using parent_t = E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPpresent;
-
-               };
-               struct sgNBPDCPnotpresent_t : E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent
-               {
-                       static constexpr const char* name() {return "sgNBPDCPnotpresent_t";}
-                       using parent_t = E_RABs_Admitted_ToBeAdded_SgNBModAck_Item_SgNBPDCPnotpresent;
-
-               };
-               void clear()
-               {
-                       switch(get_index())
-                       {
-                       case 1: var.destroy<sgNBPDCPpresent_t>(); break;
-                       case 2: var.destroy<sgNBPDCPnotpresent_t>(); break;
-                       }
-                       index = 0;
-                       base::clear();
-               }
-               template<typename V> bool decode(size_t idx, V& v)
-               {
-                       clear();
-                       switch(idx)
-                       {
-                       case 1: set_index(1); return v(var.build<sgNBPDCPpresent_t>());
-                       case 2: set_index(2); return v(var.build<sgNBPDCPnotpresent_t>());
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       switch(get_index())
-                       {
-                       case 1: return v(var.as<sgNBPDCPpresent_t>());
-                       case 2: return v(var.as<sgNBPDCPnotpresent_t>());
-                       }
-                       return false;
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<sgNBPDCPpresent_t>(1);
-                       v.template operator()<sgNBPDCPnotpresent_t>(2);
-
-               }
-               sgNBPDCPpresent_t& select_sgNBPDCPpresent() { if(get_index() != 1) { clear(); set_index(1); return var.build<sgNBPDCPpresent_t>();} return var.as<sgNBPDCPpresent_t>();}
-               sgNBPDCPpresent_t const* get_sgNBPDCPpresent() const { if(get_index() == 1) { return &var.as<sgNBPDCPpresent_t>();} return nullptr; }
-               sgNBPDCPnotpresent_t& select_sgNBPDCPnotpresent() { if(get_index() != 2) { clear(); set_index(2); return var.build<sgNBPDCPnotpresent_t>();} return var.as<sgNBPDCPnotpresent_t>();}
-               sgNBPDCPnotpresent_t const* get_sgNBPDCPnotpresent() const { if(get_index() == 2) { return &var.as<sgNBPDCPnotpresent_t>();} return nullptr; }
-               private:
-               void set_index(index_type i) {index = i; base::set();}
-               union union_type
-               {
-                       char dummy1[sizeof(sgNBPDCPpresent_t)];
-                       char dummy2[sizeof(sgNBPDCPnotpresent_t)];
-
-               };
-               asn::variant<sizeof(union_type)>        var;
-               index_type      index {0};
-       };
-       resource_configuration_t& ref_resource_configuration() {return resource_configuration;}
-       resource_configuration_t const& ref_resource_configuration() const {return resource_configuration;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(en_DC_ResourceConfiguration);
-               v(resource_configuration);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(en_DC_ResourceConfiguration);
-               v(resource_configuration);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               en_DC_ResourceConfiguration.clear();
-               resource_configuration.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       en_DC_ResourceConfiguration_t   en_DC_ResourceConfiguration;
-       resource_configuration_t        resource_configuration;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-Admitted-ToBeAdded-SgNBModAck-ItemIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-E-RABs-Admitted-ToBeAdded-SgNBModAck-Item       CRITICALITY ignore      TYPE E-RABs-Admitted-ToBeAdded-SgNBModAck-Item          PRESENCE mandatory}
-}
-*/
-
-struct E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item() { set(id_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<false>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               E_RABs_Admitted_ToBeAdded_SgNBModAck_Item& select_id_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item() { return set<E_RABs_Admitted_ToBeAdded_SgNBModAck_Item>(1); }
-               E_RABs_Admitted_ToBeAdded_SgNBModAck_Item const* get_id_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item() const { return get<E_RABs_Admitted_ToBeAdded_SgNBModAck_Item>(1); }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<E_RABs_Admitted_ToBeAdded_SgNBModAck_Item>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<E_RABs_Admitted_ToBeAdded_SgNBModAck_Item>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item()); return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<E_RABs_Admitted_ToBeAdded_SgNBModAck_Item>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(E_RABs_Admitted_ToBeAdded_SgNBModAck_Item)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_E_RABs_Admitted_ToBeAdded_SgNBModAck_Item() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-Admitted-ToBeAdded-SgNBModAckList ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-Admitted-ToBeAdded-SgNBModAck-ItemIEs} }
-*/
-
-struct E_RABs_Admitted_ToBeAdded_SgNBModAckList_elm : ProtocolIE_Single_Container<E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs>
-{
-       static constexpr const char* name() {return "E_RABs_Admitted_ToBeAdded_SgNBModAckList_elm";}
-       using parent_t = ProtocolIE_Single_Container<E_RABs_Admitted_ToBeAdded_SgNBModAck_ItemIEs>;
-
-};
-struct E_RABs_Admitted_ToBeAdded_SgNBModAckList : asn::sequenceof<E_RABs_Admitted_ToBeAdded_SgNBModAckList_elm>
-{
-       static constexpr const char* name() {return "E-RABs-Admitted-ToBeAdded-SgNBModAckList";}
-       using parent_t = asn::sequenceof<E_RABs_Admitted_ToBeAdded_SgNBModAckList_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxnoofBearers >>;
-
-};
-/*
-E-RABs-Admitted-ToBeModified-ModAckItem-SCG-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-Admitted-ToBeModified-ModAckItem-SCG-Bearer ::= SEQUENCE {
-       e-RAB-ID                                                E-RAB-ID,
-       s1-DL-GTPtunnelEndpoint                 GTPtunnelEndpoint                                                                                                                                       OPTIONAL,
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-Admitted-ToBeModified-ModAckItem-SCG-BearerExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer : asn::sequence<3, 0, true, 2>
-{
-       static constexpr const char* name() {return "E-RABs-Admitted-ToBeModified-ModAckItem-SCG-Bearer";}
-       using parent_t = asn::sequence<3, 0, true, 2>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct s1_DL_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "s1_DL_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       s1_DL_GTPtunnelEndpoint_t& set_s1_DL_GTPtunnelEndpoint() { s1_DL_GTPtunnelEndpoint.setpresent(true); return s1_DL_GTPtunnelEndpoint;}
-       s1_DL_GTPtunnelEndpoint_t const* get_s1_DL_GTPtunnelEndpoint() const {return s1_DL_GTPtunnelEndpoint.is_valid() ? &s1_DL_GTPtunnelEndpoint : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_Admitted_ToBeModified_ModAckItem_SCG_BearerExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(s1_DL_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(s1_DL_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               s1_DL_GTPtunnelEndpoint.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       s1_DL_GTPtunnelEndpoint_t       s1_DL_GTPtunnelEndpoint;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-Admitted-ToBeModified-ModAckItem-Split-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-Admitted-ToBeModified-ModAckItem-Split-Bearer ::= SEQUENCE {
-       e-RAB-ID                                                E-RAB-ID,
-       seNB-GTPtunnelEndpoint                  GTPtunnelEndpoint                                                                                                                                                       OPTIONAL,
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-Admitted-ToBeModified-ModAckItem-Split-BearerExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer : asn::sequence<3, 0, true, 2>
-{
-       static constexpr const char* name() {return "E-RABs-Admitted-ToBeModified-ModAckItem-Split-Bearer";}
-       using parent_t = asn::sequence<3, 0, true, 2>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct seNB_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "seNB_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       seNB_GTPtunnelEndpoint_t& set_seNB_GTPtunnelEndpoint() { seNB_GTPtunnelEndpoint.setpresent(true); return seNB_GTPtunnelEndpoint;}
-       seNB_GTPtunnelEndpoint_t const* get_seNB_GTPtunnelEndpoint() const {return seNB_GTPtunnelEndpoint.is_valid() ? &seNB_GTPtunnelEndpoint : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_Admitted_ToBeModified_ModAckItem_Split_BearerExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(seNB_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(seNB_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               seNB_GTPtunnelEndpoint.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       seNB_GTPtunnelEndpoint_t        seNB_GTPtunnelEndpoint;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-Admitted-ToBeModified-ModAckItem ::= CHOICE {
-       sCG-Bearer              E-RABs-Admitted-ToBeModified-ModAckItem-SCG-Bearer,
-       split-Bearer    E-RABs-Admitted-ToBeModified-ModAckItem-Split-Bearer,
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeModified_ModAckItem : asn::choice<2, 0, true>
-{
-       static constexpr const char* name() {return "E-RABs-Admitted-ToBeModified-ModAckItem";}
-       using parent_t = asn::choice<2, 0, true>;
-       index_type get_index() const {return index;}
-       bool is_unknown() const {return index == 3;}
-       void set_unknown() { set_index(3);  }
-       ~E_RABs_Admitted_ToBeModified_ModAckItem() {clear();}
-       struct sCG_Bearer_t : E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer
-       {
-               static constexpr const char* name() {return "sCG_Bearer_t";}
-               using parent_t = E_RABs_Admitted_ToBeModified_ModAckItem_SCG_Bearer;
-
-       };
-       struct split_Bearer_t : E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer
-       {
-               static constexpr const char* name() {return "split_Bearer_t";}
-               using parent_t = E_RABs_Admitted_ToBeModified_ModAckItem_Split_Bearer;
-
-       };
-       void clear()
-       {
-               switch(get_index())
-               {
-               case 1: var.destroy<sCG_Bearer_t>(); break;
-               case 2: var.destroy<split_Bearer_t>(); break;
-               }
-               index = 0;
-               base::clear();
-       }
-       template<typename V> bool decode(size_t idx, V& v)
-       {
-               clear();
-               switch(idx)
-               {
-               case 1: set_index(1); return v(var.build<sCG_Bearer_t>());
-               case 2: set_index(2); return v(var.build<split_Bearer_t>());
-               }
-               return false;
-
-       }
-       template<typename V> bool encode(V& v) const
-       {
-               switch(get_index())
-               {
-               case 1: return v(var.as<sCG_Bearer_t>());
-               case 2: return v(var.as<split_Bearer_t>());
-               }
-               return false;
-       }
-       template<typename V> static inline void enumerate(V& v)
-       {
-               v.template operator()<sCG_Bearer_t>(1);
-               v.template operator()<split_Bearer_t>(2);
-
-       }
-       sCG_Bearer_t& select_sCG_Bearer() { if(get_index() != 1) { clear(); set_index(1); return var.build<sCG_Bearer_t>();} return var.as<sCG_Bearer_t>();}
-       sCG_Bearer_t const* get_sCG_Bearer() const { if(get_index() == 1) { return &var.as<sCG_Bearer_t>();} return nullptr; }
-       split_Bearer_t& select_split_Bearer() { if(get_index() != 2) { clear(); set_index(2); return var.build<split_Bearer_t>();} return var.as<split_Bearer_t>();}
-       split_Bearer_t const* get_split_Bearer() const { if(get_index() == 2) { return &var.as<split_Bearer_t>();} return nullptr; }
-       private:
-       void set_index(index_type i) {index = i; base::set();}
-       union union_type
-       {
-               char dummy1[sizeof(sCG_Bearer_t)];
-               char dummy2[sizeof(split_Bearer_t)];
-
-       };
-       asn::variant<sizeof(union_type)>        var;
-       index_type      index {0};
-};
-/*
-E-RABs-Admitted-ToBeModified-ModAckItemIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-E-RABs-Admitted-ToBeModified-ModAckItem         CRITICALITY ignore      TYPE E-RABs-Admitted-ToBeModified-ModAckItem    PRESENCE mandatory}
-}
-*/
-
-struct E_RABs_Admitted_ToBeModified_ModAckItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_E_RABs_Admitted_ToBeModified_ModAckItem() { set(id_E_RABs_Admitted_ToBeModified_ModAckItem); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_E_RABs_Admitted_ToBeModified_ModAckItem)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_E_RABs_Admitted_ToBeModified_ModAckItem);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_E_RABs_Admitted_ToBeModified_ModAckItem() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<false>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               E_RABs_Admitted_ToBeModified_ModAckItem& select_id_E_RABs_Admitted_ToBeModified_ModAckItem() { return set<E_RABs_Admitted_ToBeModified_ModAckItem>(1); }
-               E_RABs_Admitted_ToBeModified_ModAckItem const* get_id_E_RABs_Admitted_ToBeModified_ModAckItem() const { return get<E_RABs_Admitted_ToBeModified_ModAckItem>(1); }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<E_RABs_Admitted_ToBeModified_ModAckItem>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<E_RABs_Admitted_ToBeModified_ModAckItem>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_E_RABs_Admitted_ToBeModified_ModAckItem()); return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<E_RABs_Admitted_ToBeModified_ModAckItem>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(E_RABs_Admitted_ToBeModified_ModAckItem)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_E_RABs_Admitted_ToBeModified_ModAckItem() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-Admitted-ToBeModified-ModAckList ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-Admitted-ToBeModified-ModAckItemIEs} }
-*/
-
-struct E_RABs_Admitted_ToBeModified_ModAckList_elm : ProtocolIE_Single_Container<E_RABs_Admitted_ToBeModified_ModAckItemIEs>
-{
-       static constexpr const char* name() {return "E_RABs_Admitted_ToBeModified_ModAckList_elm";}
-       using parent_t = ProtocolIE_Single_Container<E_RABs_Admitted_ToBeModified_ModAckItemIEs>;
-
-};
-struct E_RABs_Admitted_ToBeModified_ModAckList : asn::sequenceof<E_RABs_Admitted_ToBeModified_ModAckList_elm>
-{
-       static constexpr const char* name() {return "E-RABs-Admitted-ToBeModified-ModAckList";}
-       using parent_t = asn::sequenceof<E_RABs_Admitted_ToBeModified_ModAckList_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxnoofBearers >>;
-
-};
-/*
-E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       { ID id-uLpDCPSnLength                                                  CRITICALITY ignore      EXTENSION PDCPSnLength                                  PRESENCE optional}|
-       { ID id-dLPDCPSnLength                                                  CRITICALITY ignore      EXTENSION PDCPSnLength                                  PRESENCE optional},
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_uLpDCPSnLength() { set(id_uLpDCPSnLength); type=1;}
-               void select_id_dLPDCPSnLength() { set(id_dLPDCPSnLength); type=2;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_uLpDCPSnLength)) { type = 1; return true; }
-                       else if(equal(id_dLPDCPSnLength)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_uLpDCPSnLength);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_dLPDCPSnLength);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_uLpDCPSnLength() { set(ignore); type=1;}
-               void select_id_dLPDCPSnLength() { set(ignore); type=2;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               PDCPSnLength& select_id_uLpDCPSnLength() { return set<PDCPSnLength>(1); }
-               PDCPSnLength const* get_id_uLpDCPSnLength() const { return get<PDCPSnLength>(1); }
-               PDCPSnLength& select_id_dLPDCPSnLength() { return set<PDCPSnLength>(2); }
-               PDCPSnLength const* get_id_dLPDCPSnLength() const { return get<PDCPSnLength>(2); }
-               bool is_unknown() const { return type == 3; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<PDCPSnLength>(); break;
-                       case 2: var.destroy<PDCPSnLength>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<PDCPSnLength>(1);
-                       v.template operator()<PDCPSnLength>(2);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_uLpDCPSnLength()); return true;
-                       case 2: v(select_id_dLPDCPSnLength()); return true;
-                       case 3: if(type != 3) {clear(); asn::base::set();} type = 3; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<PDCPSnLength>()); return true;
-                       case 2: v(var.as<PDCPSnLength>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(PDCPSnLength)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_uLpDCPSnLength() { set(optional); type=1;}
-               void select_id_dLPDCPSnLength() { set(optional); type=2;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(optional)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresent ::= SEQUENCE {
-       s1-DL-GTPtunnelEndpoint                                 GTPtunnelEndpoint                                                                                                                                                                               OPTIONAL,
-       sgNB-UL-GTP-TEIDatPDCP                                  GTPtunnelEndpoint                                                                                                                                                                               OPTIONAL,
-       mCG-E-RAB-Level-QoS-Parameters                  E-RAB-Level-QoS-Parameters                                                                                                                                                              OPTIONAL,
-       uL-Configuration                                                        ULConfiguration                                                                                                                                                                                 OPTIONAL,
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresentExtIEs} }     OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent : asn::sequence<5, 0, true, 5>
-{
-       static constexpr const char* name() {return "E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresent";}
-       using parent_t = asn::sequence<5, 0, true, 5>;
-       struct s1_DL_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "s1_DL_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       s1_DL_GTPtunnelEndpoint_t& set_s1_DL_GTPtunnelEndpoint() { s1_DL_GTPtunnelEndpoint.setpresent(true); return s1_DL_GTPtunnelEndpoint;}
-       s1_DL_GTPtunnelEndpoint_t const* get_s1_DL_GTPtunnelEndpoint() const {return s1_DL_GTPtunnelEndpoint.is_valid() ? &s1_DL_GTPtunnelEndpoint : nullptr;}
-       struct sgNB_UL_GTP_TEIDatPDCP_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "sgNB_UL_GTP_TEIDatPDCP_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       sgNB_UL_GTP_TEIDatPDCP_t& set_sgNB_UL_GTP_TEIDatPDCP() { sgNB_UL_GTP_TEIDatPDCP.setpresent(true); return sgNB_UL_GTP_TEIDatPDCP;}
-       sgNB_UL_GTP_TEIDatPDCP_t const* get_sgNB_UL_GTP_TEIDatPDCP() const {return sgNB_UL_GTP_TEIDatPDCP.is_valid() ? &sgNB_UL_GTP_TEIDatPDCP : nullptr;}
-       struct mCG_E_RAB_Level_QoS_Parameters_t : E_RAB_Level_QoS_Parameters
-       {
-               static constexpr const char* name() {return "mCG_E_RAB_Level_QoS_Parameters_t";}
-               using parent_t = E_RAB_Level_QoS_Parameters;
-               static constexpr bool optional = true;
-
-       };
-       mCG_E_RAB_Level_QoS_Parameters_t& set_mCG_E_RAB_Level_QoS_Parameters() { mCG_E_RAB_Level_QoS_Parameters.setpresent(true); return mCG_E_RAB_Level_QoS_Parameters;}
-       mCG_E_RAB_Level_QoS_Parameters_t const* get_mCG_E_RAB_Level_QoS_Parameters() const {return mCG_E_RAB_Level_QoS_Parameters.is_valid() ? &mCG_E_RAB_Level_QoS_Parameters : nullptr;}
-       struct uL_Configuration_t : ULConfiguration
-       {
-               static constexpr const char* name() {return "uL_Configuration_t";}
-               using parent_t = ULConfiguration;
-               static constexpr bool optional = true;
-
-       };
-       uL_Configuration_t& set_uL_Configuration() { uL_Configuration.setpresent(true); return uL_Configuration;}
-       uL_Configuration_t const* get_uL_Configuration() const {return uL_Configuration.is_valid() ? &uL_Configuration : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresentExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(s1_DL_GTPtunnelEndpoint);
-               v(sgNB_UL_GTP_TEIDatPDCP);
-               v(mCG_E_RAB_Level_QoS_Parameters);
-               v(uL_Configuration);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(s1_DL_GTPtunnelEndpoint);
-               v(sgNB_UL_GTP_TEIDatPDCP);
-               v(mCG_E_RAB_Level_QoS_Parameters);
-               v(uL_Configuration);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               s1_DL_GTPtunnelEndpoint.clear();
-               sgNB_UL_GTP_TEIDatPDCP.clear();
-               mCG_E_RAB_Level_QoS_Parameters.clear();
-               uL_Configuration.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       s1_DL_GTPtunnelEndpoint_t       s1_DL_GTPtunnelEndpoint;
-       sgNB_UL_GTP_TEIDatPDCP_t        sgNB_UL_GTP_TEIDatPDCP;
-       mCG_E_RAB_Level_QoS_Parameters_t        mCG_E_RAB_Level_QoS_Parameters;
-       uL_Configuration_t      uL_Configuration;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       { ID id-secondarysgNBDLGTPTEIDatPDCP                    CRITICALITY ignore      EXTENSION GTPtunnelEndpoint                             PRESENCE optional}|
-       { ID id-RLC-Status                                                              CRITICALITY ignore                      EXTENSION RLC-Status                            PRESENCE optional },
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_secondarysgNBDLGTPTEIDatPDCP() { set(id_secondarysgNBDLGTPTEIDatPDCP); type=1;}
-               void select_id_RLC_Status() { set(id_RLC_Status); type=2;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_secondarysgNBDLGTPTEIDatPDCP)) { type = 1; return true; }
-                       else if(equal(id_RLC_Status)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_secondarysgNBDLGTPTEIDatPDCP);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_RLC_Status);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_secondarysgNBDLGTPTEIDatPDCP() { set(ignore); type=1;}
-               void select_id_RLC_Status() { set(ignore); type=2;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               GTPtunnelEndpoint& select_id_secondarysgNBDLGTPTEIDatPDCP() { return set<GTPtunnelEndpoint>(1); }
-               GTPtunnelEndpoint const* get_id_secondarysgNBDLGTPTEIDatPDCP() const { return get<GTPtunnelEndpoint>(1); }
-               RLC_Status& select_id_RLC_Status() { return set<RLC_Status>(2); }
-               RLC_Status const* get_id_RLC_Status() const { return get<RLC_Status>(2); }
-               bool is_unknown() const { return type == 3; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<GTPtunnelEndpoint>(); break;
-                       case 2: var.destroy<RLC_Status>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<GTPtunnelEndpoint>(1);
-                       v.template operator()<RLC_Status>(2);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_secondarysgNBDLGTPTEIDatPDCP()); return true;
-                       case 2: v(select_id_RLC_Status()); return true;
-                       case 3: if(type != 3) {clear(); asn::base::set();} type = 3; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<GTPtunnelEndpoint>()); return true;
-                       case 2: v(var.as<RLC_Status>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(GTPtunnelEndpoint)];
-                       char dummy2[sizeof(RLC_Status)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_secondarysgNBDLGTPTEIDatPDCP() { set(optional); type=1;}
-               void select_id_RLC_Status() { set(optional); type=2;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(optional)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresent ::= SEQUENCE {
-       sgNB-DL-GTP-TEIDatSCG                                   GTPtunnelEndpoint                                                                                                                                                                                               OPTIONAL,
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresentExtIEs} }  OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent : asn::sequence<2, 0, true, 2>
-{
-       static constexpr const char* name() {return "E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresent";}
-       using parent_t = asn::sequence<2, 0, true, 2>;
-       struct sgNB_DL_GTP_TEIDatSCG_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "sgNB_DL_GTP_TEIDatSCG_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       sgNB_DL_GTP_TEIDatSCG_t& set_sgNB_DL_GTP_TEIDatSCG() { sgNB_DL_GTP_TEIDatSCG.setpresent(true); return sgNB_DL_GTP_TEIDatSCG;}
-       sgNB_DL_GTP_TEIDatSCG_t const* get_sgNB_DL_GTP_TEIDatSCG() const {return sgNB_DL_GTP_TEIDatSCG.is_valid() ? &sgNB_DL_GTP_TEIDatSCG : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(sgNB_DL_GTP_TEIDatSCG);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(sgNB_DL_GTP_TEIDatSCG);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               sgNB_DL_GTP_TEIDatSCG.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       sgNB_DL_GTP_TEIDatSCG_t sgNB_DL_GTP_TEIDatSCG;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeAdded-SgNBModAck-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-Admitted-ToBeModified-SgNBModAck-Item ::= SEQUENCE {
-       e-RAB-ID                                                                E-RAB-ID,
-       en-DC-ResourceConfiguration                     EN-DC-ResourceConfiguration,
-       resource-configuration                          CHOICE {
-               sgNBPDCPpresent                                         E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPpresent,
-               sgNBPDCPnotpresent                                      E-RABs-Admitted-ToBeModified-SgNBModAck-Item-SgNBPDCPnotpresent,
-               ...
-       },
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeAdded-SgNBModAck-ItemExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeModified_SgNBModAck_Item : asn::sequence<4, 0, true, 1>
-{
-       static constexpr const char* name() {return "E-RABs-Admitted-ToBeModified-SgNBModAck-Item";}
-       using parent_t = asn::sequence<4, 0, true, 1>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct en_DC_ResourceConfiguration_t : EN_DC_ResourceConfiguration
-       {
-               static constexpr const char* name() {return "en_DC_ResourceConfiguration_t";}
-               using parent_t = EN_DC_ResourceConfiguration;
-
-       };
-       en_DC_ResourceConfiguration_t& ref_en_DC_ResourceConfiguration() {return en_DC_ResourceConfiguration;}
-       en_DC_ResourceConfiguration_t const& ref_en_DC_ResourceConfiguration() const {return en_DC_ResourceConfiguration;}
-       struct resource_configuration_t : asn::choice<2, 0, true>
-       {
-               static constexpr const char* name() {return "resource_configuration_t";}
-               using parent_t = asn::choice<2, 0, true>;
-               index_type get_index() const {return index;}
-               bool is_unknown() const {return index == 3;}
-               void set_unknown() { set_index(3);  }
-               ~resource_configuration_t() {clear();}
-               struct sgNBPDCPpresent_t : E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent
-               {
-                       static constexpr const char* name() {return "sgNBPDCPpresent_t";}
-                       using parent_t = E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPpresent;
-
-               };
-               struct sgNBPDCPnotpresent_t : E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent
-               {
-                       static constexpr const char* name() {return "sgNBPDCPnotpresent_t";}
-                       using parent_t = E_RABs_Admitted_ToBeModified_SgNBModAck_Item_SgNBPDCPnotpresent;
-
-               };
-               void clear()
-               {
-                       switch(get_index())
-                       {
-                       case 1: var.destroy<sgNBPDCPpresent_t>(); break;
-                       case 2: var.destroy<sgNBPDCPnotpresent_t>(); break;
-                       }
-                       index = 0;
-                       base::clear();
-               }
-               template<typename V> bool decode(size_t idx, V& v)
-               {
-                       clear();
-                       switch(idx)
-                       {
-                       case 1: set_index(1); return v(var.build<sgNBPDCPpresent_t>());
-                       case 2: set_index(2); return v(var.build<sgNBPDCPnotpresent_t>());
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       switch(get_index())
-                       {
-                       case 1: return v(var.as<sgNBPDCPpresent_t>());
-                       case 2: return v(var.as<sgNBPDCPnotpresent_t>());
-                       }
-                       return false;
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<sgNBPDCPpresent_t>(1);
-                       v.template operator()<sgNBPDCPnotpresent_t>(2);
-
-               }
-               sgNBPDCPpresent_t& select_sgNBPDCPpresent() { if(get_index() != 1) { clear(); set_index(1); return var.build<sgNBPDCPpresent_t>();} return var.as<sgNBPDCPpresent_t>();}
-               sgNBPDCPpresent_t const* get_sgNBPDCPpresent() const { if(get_index() == 1) { return &var.as<sgNBPDCPpresent_t>();} return nullptr; }
-               sgNBPDCPnotpresent_t& select_sgNBPDCPnotpresent() { if(get_index() != 2) { clear(); set_index(2); return var.build<sgNBPDCPnotpresent_t>();} return var.as<sgNBPDCPnotpresent_t>();}
-               sgNBPDCPnotpresent_t const* get_sgNBPDCPnotpresent() const { if(get_index() == 2) { return &var.as<sgNBPDCPnotpresent_t>();} return nullptr; }
-               private:
-               void set_index(index_type i) {index = i; base::set();}
-               union union_type
-               {
-                       char dummy1[sizeof(sgNBPDCPpresent_t)];
-                       char dummy2[sizeof(sgNBPDCPnotpresent_t)];
-
-               };
-               asn::variant<sizeof(union_type)>        var;
-               index_type      index {0};
-       };
-       resource_configuration_t& ref_resource_configuration() {return resource_configuration;}
-       resource_configuration_t const& ref_resource_configuration() const {return resource_configuration;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeAdded_SgNBModAck_ItemExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(en_DC_ResourceConfiguration);
-               v(resource_configuration);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(en_DC_ResourceConfiguration);
-               v(resource_configuration);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               en_DC_ResourceConfiguration.clear();
-               resource_configuration.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       en_DC_ResourceConfiguration_t   en_DC_ResourceConfiguration;
-       resource_configuration_t        resource_configuration;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-Admitted-ToBeModified-SgNBModAck-ItemIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-E-RABs-Admitted-ToBeModified-SgNBModAck-Item            CRITICALITY ignore      TYPE E-RABs-Admitted-ToBeModified-SgNBModAck-Item               PRESENCE mandatory}
-}
-*/
-
-struct E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_E_RABs_Admitted_ToBeModified_SgNBModAck_Item() { set(id_E_RABs_Admitted_ToBeModified_SgNBModAck_Item); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_E_RABs_Admitted_ToBeModified_SgNBModAck_Item)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_E_RABs_Admitted_ToBeModified_SgNBModAck_Item);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_E_RABs_Admitted_ToBeModified_SgNBModAck_Item() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<false>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               E_RABs_Admitted_ToBeModified_SgNBModAck_Item& select_id_E_RABs_Admitted_ToBeModified_SgNBModAck_Item() { return set<E_RABs_Admitted_ToBeModified_SgNBModAck_Item>(1); }
-               E_RABs_Admitted_ToBeModified_SgNBModAck_Item const* get_id_E_RABs_Admitted_ToBeModified_SgNBModAck_Item() const { return get<E_RABs_Admitted_ToBeModified_SgNBModAck_Item>(1); }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<E_RABs_Admitted_ToBeModified_SgNBModAck_Item>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<E_RABs_Admitted_ToBeModified_SgNBModAck_Item>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_E_RABs_Admitted_ToBeModified_SgNBModAck_Item()); return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<E_RABs_Admitted_ToBeModified_SgNBModAck_Item>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(E_RABs_Admitted_ToBeModified_SgNBModAck_Item)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_E_RABs_Admitted_ToBeModified_SgNBModAck_Item() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-Admitted-ToBeModified-SgNBModAckList ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-Admitted-ToBeModified-SgNBModAck-ItemIEs} }
-*/
-
-struct E_RABs_Admitted_ToBeModified_SgNBModAckList_elm : ProtocolIE_Single_Container<E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs>
-{
-       static constexpr const char* name() {return "E_RABs_Admitted_ToBeModified_SgNBModAckList_elm";}
-       using parent_t = ProtocolIE_Single_Container<E_RABs_Admitted_ToBeModified_SgNBModAck_ItemIEs>;
-
-};
-struct E_RABs_Admitted_ToBeModified_SgNBModAckList : asn::sequenceof<E_RABs_Admitted_ToBeModified_SgNBModAckList_elm>
-{
-       static constexpr const char* name() {return "E-RABs-Admitted-ToBeModified-SgNBModAckList";}
-       using parent_t = asn::sequenceof<E_RABs_Admitted_ToBeModified_SgNBModAckList_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxnoofBearers >>;
-
-};
-/*
-E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-Bearer ::= SEQUENCE {
-       e-RAB-ID                                        E-RAB-ID,
-       iE-Extensions                           ProtocolExtensionContainer { {E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-BearerExtIEs} }       OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer : asn::sequence<2, 0, true, 1>
-{
-       static constexpr const char* name() {return "E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-Bearer";}
-       using parent_t = asn::sequence<2, 0, true, 1>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_BearerExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-Admitted-ToBeReleased-ModAckItem-Split-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-Admitted-ToBeReleased-ModAckItem-Split-Bearer ::= SEQUENCE {
-       e-RAB-ID                                        E-RAB-ID,
-       iE-Extensions                           ProtocolExtensionContainer { {E-RABs-Admitted-ToBeReleased-ModAckItem-Split-BearerExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer : asn::sequence<2, 0, true, 1>
-{
-       static constexpr const char* name() {return "E-RABs-Admitted-ToBeReleased-ModAckItem-Split-Bearer";}
-       using parent_t = asn::sequence<2, 0, true, 1>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_Admitted_ToBeReleased_ModAckItem_Split_BearerExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-Admitted-ToReleased-ModAckItem ::= CHOICE {
-       sCG-Bearer              E-RABs-Admitted-ToBeReleased-ModAckItem-SCG-Bearer,
-       split-Bearer    E-RABs-Admitted-ToBeReleased-ModAckItem-Split-Bearer,
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToReleased_ModAckItem : asn::choice<2, 0, true>
-{
-       static constexpr const char* name() {return "E-RABs-Admitted-ToReleased-ModAckItem";}
-       using parent_t = asn::choice<2, 0, true>;
-       index_type get_index() const {return index;}
-       bool is_unknown() const {return index == 3;}
-       void set_unknown() { set_index(3);  }
-       ~E_RABs_Admitted_ToReleased_ModAckItem() {clear();}
-       struct sCG_Bearer_t : E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer
-       {
-               static constexpr const char* name() {return "sCG_Bearer_t";}
-               using parent_t = E_RABs_Admitted_ToBeReleased_ModAckItem_SCG_Bearer;
-
-       };
-       struct split_Bearer_t : E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer
-       {
-               static constexpr const char* name() {return "split_Bearer_t";}
-               using parent_t = E_RABs_Admitted_ToBeReleased_ModAckItem_Split_Bearer;
-
-       };
-       void clear()
-       {
-               switch(get_index())
-               {
-               case 1: var.destroy<sCG_Bearer_t>(); break;
-               case 2: var.destroy<split_Bearer_t>(); break;
-               }
-               index = 0;
-               base::clear();
-       }
-       template<typename V> bool decode(size_t idx, V& v)
-       {
-               clear();
-               switch(idx)
-               {
-               case 1: set_index(1); return v(var.build<sCG_Bearer_t>());
-               case 2: set_index(2); return v(var.build<split_Bearer_t>());
-               }
-               return false;
-
-       }
-       template<typename V> bool encode(V& v) const
-       {
-               switch(get_index())
-               {
-               case 1: return v(var.as<sCG_Bearer_t>());
-               case 2: return v(var.as<split_Bearer_t>());
-               }
-               return false;
-       }
-       template<typename V> static inline void enumerate(V& v)
-       {
-               v.template operator()<sCG_Bearer_t>(1);
-               v.template operator()<split_Bearer_t>(2);
-
-       }
-       sCG_Bearer_t& select_sCG_Bearer() { if(get_index() != 1) { clear(); set_index(1); return var.build<sCG_Bearer_t>();} return var.as<sCG_Bearer_t>();}
-       sCG_Bearer_t const* get_sCG_Bearer() const { if(get_index() == 1) { return &var.as<sCG_Bearer_t>();} return nullptr; }
-       split_Bearer_t& select_split_Bearer() { if(get_index() != 2) { clear(); set_index(2); return var.build<split_Bearer_t>();} return var.as<split_Bearer_t>();}
-       split_Bearer_t const* get_split_Bearer() const { if(get_index() == 2) { return &var.as<split_Bearer_t>();} return nullptr; }
-       private:
-       void set_index(index_type i) {index = i; base::set();}
-       union union_type
-       {
-               char dummy1[sizeof(sCG_Bearer_t)];
-               char dummy2[sizeof(split_Bearer_t)];
-
-       };
-       asn::variant<sizeof(union_type)>        var;
-       index_type      index {0};
-};
-/*
-E-RABs-Admitted-ToBeReleased-ModAckItemIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-E-RABs-Admitted-ToBeReleased-ModAckItem         CRITICALITY ignore      TYPE E-RABs-Admitted-ToReleased-ModAckItem              PRESENCE mandatory}
-}
-*/
-
-struct E_RABs_Admitted_ToBeReleased_ModAckItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_E_RABs_Admitted_ToBeReleased_ModAckItem() { set(id_E_RABs_Admitted_ToBeReleased_ModAckItem); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_E_RABs_Admitted_ToBeReleased_ModAckItem)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_E_RABs_Admitted_ToBeReleased_ModAckItem);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_E_RABs_Admitted_ToBeReleased_ModAckItem() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<false>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               E_RABs_Admitted_ToReleased_ModAckItem& select_id_E_RABs_Admitted_ToBeReleased_ModAckItem() { return set<E_RABs_Admitted_ToReleased_ModAckItem>(1); }
-               E_RABs_Admitted_ToReleased_ModAckItem const* get_id_E_RABs_Admitted_ToBeReleased_ModAckItem() const { return get<E_RABs_Admitted_ToReleased_ModAckItem>(1); }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<E_RABs_Admitted_ToReleased_ModAckItem>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<E_RABs_Admitted_ToReleased_ModAckItem>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_E_RABs_Admitted_ToBeReleased_ModAckItem()); return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<E_RABs_Admitted_ToReleased_ModAckItem>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(E_RABs_Admitted_ToReleased_ModAckItem)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_E_RABs_Admitted_ToBeReleased_ModAckItem() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-Admitted-ToBeReleased-ModAckList ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-Admitted-ToBeReleased-ModAckItemIEs} }
-*/
-
-struct E_RABs_Admitted_ToBeReleased_ModAckList_elm : ProtocolIE_Single_Container<E_RABs_Admitted_ToBeReleased_ModAckItemIEs>
-{
-       static constexpr const char* name() {return "E_RABs_Admitted_ToBeReleased_ModAckList_elm";}
-       using parent_t = ProtocolIE_Single_Container<E_RABs_Admitted_ToBeReleased_ModAckItemIEs>;
-
-};
-struct E_RABs_Admitted_ToBeReleased_ModAckList : asn::sequenceof<E_RABs_Admitted_ToBeReleased_ModAckList_elm>
-{
-       static constexpr const char* name() {return "E-RABs-Admitted-ToBeReleased-ModAckList";}
-       using parent_t = asn::sequenceof<E_RABs_Admitted_ToBeReleased_ModAckList_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxnoofBearers >>;
-
-};
-/*
-E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresent ::= SEQUENCE {
-       iE-Extensions                           ProtocolExtensionContainer { {E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresentExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent : asn::sequence<1, 0, true, 1>
-{
-       static constexpr const char* name() {return "E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresent";}
-       using parent_t = asn::sequence<1, 0, true, 1>;
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresentExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               iE_Extensions.clear();
-
-       };
-       private:
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresent ::= SEQUENCE {
-       iE-Extensions                           ProtocolExtensionContainer { {E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresentExtIEs} }             OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent : asn::sequence<1, 0, true, 1>
-{
-       static constexpr const char* name() {return "E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresent";}
-       using parent_t = asn::sequence<1, 0, true, 1>;
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresentExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               iE_Extensions.clear();
-
-       };
-       private:
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeReleased-SgNBModAck-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-Admitted-ToReleased-SgNBModAck-Item ::= SEQUENCE {
-       e-RAB-ID                                                        E-RAB-ID,
-       en-DC-ResourceConfiguration                     EN-DC-ResourceConfiguration,
-       resource-configuration                          CHOICE {
-               sgNBPDCPpresent                                         E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPpresent,
-               sgNBPDCPnotpresent                                      E-RABs-Admitted-ToBeReleased-SgNBModAck-Item-SgNBPDCPnotpresent,
-               ...
-       },
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeReleased-SgNBModAck-ItemExtIEs} }      OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToReleased_SgNBModAck_Item : asn::sequence<4, 0, true, 1>
-{
-       static constexpr const char* name() {return "E-RABs-Admitted-ToReleased-SgNBModAck-Item";}
-       using parent_t = asn::sequence<4, 0, true, 1>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct en_DC_ResourceConfiguration_t : EN_DC_ResourceConfiguration
-       {
-               static constexpr const char* name() {return "en_DC_ResourceConfiguration_t";}
-               using parent_t = EN_DC_ResourceConfiguration;
-
-       };
-       en_DC_ResourceConfiguration_t& ref_en_DC_ResourceConfiguration() {return en_DC_ResourceConfiguration;}
-       en_DC_ResourceConfiguration_t const& ref_en_DC_ResourceConfiguration() const {return en_DC_ResourceConfiguration;}
-       struct resource_configuration_t : asn::choice<2, 0, true>
-       {
-               static constexpr const char* name() {return "resource_configuration_t";}
-               using parent_t = asn::choice<2, 0, true>;
-               index_type get_index() const {return index;}
-               bool is_unknown() const {return index == 3;}
-               void set_unknown() { set_index(3);  }
-               ~resource_configuration_t() {clear();}
-               struct sgNBPDCPpresent_t : E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent
-               {
-                       static constexpr const char* name() {return "sgNBPDCPpresent_t";}
-                       using parent_t = E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPpresent;
-
-               };
-               struct sgNBPDCPnotpresent_t : E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent
-               {
-                       static constexpr const char* name() {return "sgNBPDCPnotpresent_t";}
-                       using parent_t = E_RABs_Admitted_ToBeReleased_SgNBModAck_Item_SgNBPDCPnotpresent;
-
-               };
-               void clear()
-               {
-                       switch(get_index())
-                       {
-                       case 1: var.destroy<sgNBPDCPpresent_t>(); break;
-                       case 2: var.destroy<sgNBPDCPnotpresent_t>(); break;
-                       }
-                       index = 0;
-                       base::clear();
-               }
-               template<typename V> bool decode(size_t idx, V& v)
-               {
-                       clear();
-                       switch(idx)
-                       {
-                       case 1: set_index(1); return v(var.build<sgNBPDCPpresent_t>());
-                       case 2: set_index(2); return v(var.build<sgNBPDCPnotpresent_t>());
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       switch(get_index())
-                       {
-                       case 1: return v(var.as<sgNBPDCPpresent_t>());
-                       case 2: return v(var.as<sgNBPDCPnotpresent_t>());
-                       }
-                       return false;
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<sgNBPDCPpresent_t>(1);
-                       v.template operator()<sgNBPDCPnotpresent_t>(2);
-
-               }
-               sgNBPDCPpresent_t& select_sgNBPDCPpresent() { if(get_index() != 1) { clear(); set_index(1); return var.build<sgNBPDCPpresent_t>();} return var.as<sgNBPDCPpresent_t>();}
-               sgNBPDCPpresent_t const* get_sgNBPDCPpresent() const { if(get_index() == 1) { return &var.as<sgNBPDCPpresent_t>();} return nullptr; }
-               sgNBPDCPnotpresent_t& select_sgNBPDCPnotpresent() { if(get_index() != 2) { clear(); set_index(2); return var.build<sgNBPDCPnotpresent_t>();} return var.as<sgNBPDCPnotpresent_t>();}
-               sgNBPDCPnotpresent_t const* get_sgNBPDCPnotpresent() const { if(get_index() == 2) { return &var.as<sgNBPDCPnotpresent_t>();} return nullptr; }
-               private:
-               void set_index(index_type i) {index = i; base::set();}
-               union union_type
-               {
-                       char dummy1[sizeof(sgNBPDCPpresent_t)];
-                       char dummy2[sizeof(sgNBPDCPnotpresent_t)];
-
-               };
-               asn::variant<sizeof(union_type)>        var;
-               index_type      index {0};
-       };
-       resource_configuration_t& ref_resource_configuration() {return resource_configuration;}
-       resource_configuration_t const& ref_resource_configuration() const {return resource_configuration;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeReleased_SgNBModAck_ItemExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(en_DC_ResourceConfiguration);
-               v(resource_configuration);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(en_DC_ResourceConfiguration);
-               v(resource_configuration);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               en_DC_ResourceConfiguration.clear();
-               resource_configuration.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       en_DC_ResourceConfiguration_t   en_DC_ResourceConfiguration;
-       resource_configuration_t        resource_configuration;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-Admitted-ToBeReleased-SgNBModAck-ItemIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-E-RABs-Admitted-ToBeReleased-SgNBModAck-Item            CRITICALITY ignore      TYPE E-RABs-Admitted-ToReleased-SgNBModAck-Item         PRESENCE mandatory}
-}
-*/
-
-struct E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item() { set(id_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<false>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               E_RABs_Admitted_ToReleased_SgNBModAck_Item& select_id_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item() { return set<E_RABs_Admitted_ToReleased_SgNBModAck_Item>(1); }
-               E_RABs_Admitted_ToReleased_SgNBModAck_Item const* get_id_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item() const { return get<E_RABs_Admitted_ToReleased_SgNBModAck_Item>(1); }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<E_RABs_Admitted_ToReleased_SgNBModAck_Item>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<E_RABs_Admitted_ToReleased_SgNBModAck_Item>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item()); return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<E_RABs_Admitted_ToReleased_SgNBModAck_Item>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(E_RABs_Admitted_ToReleased_SgNBModAck_Item)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_E_RABs_Admitted_ToBeReleased_SgNBModAck_Item() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-Admitted-ToBeReleased-SgNBModAckList ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-Admitted-ToBeReleased-SgNBModAck-ItemIEs} }
-*/
-
-struct E_RABs_Admitted_ToBeReleased_SgNBModAckList_elm : ProtocolIE_Single_Container<E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs>
-{
-       static constexpr const char* name() {return "E_RABs_Admitted_ToBeReleased_SgNBModAckList_elm";}
-       using parent_t = ProtocolIE_Single_Container<E_RABs_Admitted_ToBeReleased_SgNBModAck_ItemIEs>;
-
-};
-struct E_RABs_Admitted_ToBeReleased_SgNBModAckList : asn::sequenceof<E_RABs_Admitted_ToBeReleased_SgNBModAckList_elm>
-{
-       static constexpr const char* name() {return "E-RABs-Admitted-ToBeReleased-SgNBModAckList";}
-       using parent_t = asn::sequenceof<E_RABs_Admitted_ToBeReleased_SgNBModAckList_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxnoofBearers >>;
-
-};
-/*
-E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item ::= SEQUENCE {
-       e-RAB-ID                                                        E-RAB-ID,
-       rlc-Mode-transferred                    RLCMode,
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-ItemExtIEs} }  OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item : asn::sequence<3, 0, true, 1>
-{
-       static constexpr const char* name() {return "E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item";}
-       using parent_t = asn::sequence<3, 0, true, 1>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct rlc_Mode_transferred_t : RLCMode
-       {
-               static constexpr const char* name() {return "rlc_Mode_transferred_t";}
-               using parent_t = RLCMode;
-
-       };
-       rlc_Mode_transferred_t& ref_rlc_Mode_transferred() {return rlc_Mode_transferred;}
-       rlc_Mode_transferred_t const& ref_rlc_Mode_transferred() const {return rlc_Mode_transferred;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(rlc_Mode_transferred);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(rlc_Mode_transferred);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               rlc_Mode_transferred.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       rlc_Mode_transferred_t  rlc_Mode_transferred;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-ItemIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item CRITICALITY ignore      TYPE E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-Item            PRESENCE mandatory},
-       ...
-}
-*/
-
-struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item() { set(id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item& select_id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item() { return set<E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item>(1); }
-               E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item const* get_id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item() const { return get<E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_Item() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF
-                                                                               ProtocolIE-Single-Container { {E-RABs-Admitted-ToBeReleased-SgNBRelReqAck-ItemIEs} }
-*/
-
-struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_elm : ProtocolIE_Single_Container<E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs>
-{
-       static constexpr const char* name() {return "E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_elm";}
-       using parent_t = ProtocolIE_Single_Container<E_RABs_Admitted_ToBeReleased_SgNBRelReqAck_ItemIEs>;
-
-};
-struct E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList : asn::sequenceof<E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_elm>
-{
-       static constexpr const char* name() {return "E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList";}
-       using parent_t = asn::sequenceof<E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxnoofBearers >>;
-
-};
-/*
-E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresent ::= SEQUENCE {
-       iE-Extensions                           ProtocolExtensionContainer { {E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresentExtIEs} }             OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent : asn::sequence<1, 0, true, 1>
-{
-       static constexpr const char* name() {return "E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresent";}
-       using parent_t = asn::sequence<1, 0, true, 1>;
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresentExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               iE_Extensions.clear();
-
-       };
-       private:
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       { ID id-uLpDCPSnLength                                                  CRITICALITY ignore      EXTENSION PDCPSnLength                                  PRESENCE optional}|
-       { ID id-dLPDCPSnLength                                                  CRITICALITY ignore      EXTENSION PDCPSnLength                                  PRESENCE optional},
-       ...
-}
-*/
-
-struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_uLpDCPSnLength() { set(id_uLpDCPSnLength); type=1;}
-               void select_id_dLPDCPSnLength() { set(id_dLPDCPSnLength); type=2;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_uLpDCPSnLength)) { type = 1; return true; }
-                       else if(equal(id_dLPDCPSnLength)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_uLpDCPSnLength);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_dLPDCPSnLength);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_uLpDCPSnLength() { set(ignore); type=1;}
-               void select_id_dLPDCPSnLength() { set(ignore); type=2;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               PDCPSnLength& select_id_uLpDCPSnLength() { return set<PDCPSnLength>(1); }
-               PDCPSnLength const* get_id_uLpDCPSnLength() const { return get<PDCPSnLength>(1); }
-               PDCPSnLength& select_id_dLPDCPSnLength() { return set<PDCPSnLength>(2); }
-               PDCPSnLength const* get_id_dLPDCPSnLength() const { return get<PDCPSnLength>(2); }
-               bool is_unknown() const { return type == 3; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<PDCPSnLength>(); break;
-                       case 2: var.destroy<PDCPSnLength>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<PDCPSnLength>(1);
-                       v.template operator()<PDCPSnLength>(2);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_uLpDCPSnLength()); return true;
-                       case 2: v(select_id_dLPDCPSnLength()); return true;
-                       case 3: if(type != 3) {clear(); asn::base::set();} type = 3; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<PDCPSnLength>()); return true;
-                       case 2: v(var.as<PDCPSnLength>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(PDCPSnLength)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_uLpDCPSnLength() { set(optional); type=1;}
-               void select_id_dLPDCPSnLength() { set(optional); type=2;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(optional)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresent ::= SEQUENCE {
-       secondary-meNB-UL-GTP-TEIDatPDCP                                GTPtunnelEndpoint                               OPTIONAL,
-       iE-Extensions                           ProtocolExtensionContainer { {E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresentExtIEs} }          OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent : asn::sequence<2, 0, true, 2>
-{
-       static constexpr const char* name() {return "E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresent";}
-       using parent_t = asn::sequence<2, 0, true, 2>;
-       struct secondary_meNB_UL_GTP_TEIDatPDCP_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "secondary_meNB_UL_GTP_TEIDatPDCP_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       secondary_meNB_UL_GTP_TEIDatPDCP_t& set_secondary_meNB_UL_GTP_TEIDatPDCP() { secondary_meNB_UL_GTP_TEIDatPDCP.setpresent(true); return secondary_meNB_UL_GTP_TEIDatPDCP;}
-       secondary_meNB_UL_GTP_TEIDatPDCP_t const* get_secondary_meNB_UL_GTP_TEIDatPDCP() const {return secondary_meNB_UL_GTP_TEIDatPDCP.is_valid() ? &secondary_meNB_UL_GTP_TEIDatPDCP : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresentExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(secondary_meNB_UL_GTP_TEIDatPDCP);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(secondary_meNB_UL_GTP_TEIDatPDCP);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               secondary_meNB_UL_GTP_TEIDatPDCP.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       secondary_meNB_UL_GTP_TEIDatPDCP_t      secondary_meNB_UL_GTP_TEIDatPDCP;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-AdmittedToBeModified-SgNBModConf-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-AdmittedToBeModified-SgNBModConf-Item ::= SEQUENCE {
-       e-RAB-ID                                                                E-RAB-ID,
-       en-DC-ResourceConfiguration                     EN-DC-ResourceConfiguration,
-       resource-configuration                          CHOICE {
-               sgNBPDCPpresent                                         E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPpresent,
-               sgNBPDCPnotpresent                                      E-RABs-AdmittedToBeModified-SgNBModConf-Item-SgNBPDCPnotpresent,
-               ...
-       },
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-AdmittedToBeModified-SgNBModConf-ItemExtIEs} }     OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_AdmittedToBeModified_SgNBModConf_Item : asn::sequence<4, 0, true, 1>
-{
-       static constexpr const char* name() {return "E-RABs-AdmittedToBeModified-SgNBModConf-Item";}
-       using parent_t = asn::sequence<4, 0, true, 1>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct en_DC_ResourceConfiguration_t : EN_DC_ResourceConfiguration
-       {
-               static constexpr const char* name() {return "en_DC_ResourceConfiguration_t";}
-               using parent_t = EN_DC_ResourceConfiguration;
-
-       };
-       en_DC_ResourceConfiguration_t& ref_en_DC_ResourceConfiguration() {return en_DC_ResourceConfiguration;}
-       en_DC_ResourceConfiguration_t const& ref_en_DC_ResourceConfiguration() const {return en_DC_ResourceConfiguration;}
-       struct resource_configuration_t : asn::choice<2, 0, true>
-       {
-               static constexpr const char* name() {return "resource_configuration_t";}
-               using parent_t = asn::choice<2, 0, true>;
-               index_type get_index() const {return index;}
-               bool is_unknown() const {return index == 3;}
-               void set_unknown() { set_index(3);  }
-               ~resource_configuration_t() {clear();}
-               struct sgNBPDCPpresent_t : E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent
-               {
-                       static constexpr const char* name() {return "sgNBPDCPpresent_t";}
-                       using parent_t = E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPpresent;
-
-               };
-               struct sgNBPDCPnotpresent_t : E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent
-               {
-                       static constexpr const char* name() {return "sgNBPDCPnotpresent_t";}
-                       using parent_t = E_RABs_AdmittedToBeModified_SgNBModConf_Item_SgNBPDCPnotpresent;
-
-               };
-               void clear()
-               {
-                       switch(get_index())
-                       {
-                       case 1: var.destroy<sgNBPDCPpresent_t>(); break;
-                       case 2: var.destroy<sgNBPDCPnotpresent_t>(); break;
-                       }
-                       index = 0;
-                       base::clear();
-               }
-               template<typename V> bool decode(size_t idx, V& v)
-               {
-                       clear();
-                       switch(idx)
-                       {
-                       case 1: set_index(1); return v(var.build<sgNBPDCPpresent_t>());
-                       case 2: set_index(2); return v(var.build<sgNBPDCPnotpresent_t>());
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       switch(get_index())
-                       {
-                       case 1: return v(var.as<sgNBPDCPpresent_t>());
-                       case 2: return v(var.as<sgNBPDCPnotpresent_t>());
-                       }
-                       return false;
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<sgNBPDCPpresent_t>(1);
-                       v.template operator()<sgNBPDCPnotpresent_t>(2);
-
-               }
-               sgNBPDCPpresent_t& select_sgNBPDCPpresent() { if(get_index() != 1) { clear(); set_index(1); return var.build<sgNBPDCPpresent_t>();} return var.as<sgNBPDCPpresent_t>();}
-               sgNBPDCPpresent_t const* get_sgNBPDCPpresent() const { if(get_index() == 1) { return &var.as<sgNBPDCPpresent_t>();} return nullptr; }
-               sgNBPDCPnotpresent_t& select_sgNBPDCPnotpresent() { if(get_index() != 2) { clear(); set_index(2); return var.build<sgNBPDCPnotpresent_t>();} return var.as<sgNBPDCPnotpresent_t>();}
-               sgNBPDCPnotpresent_t const* get_sgNBPDCPnotpresent() const { if(get_index() == 2) { return &var.as<sgNBPDCPnotpresent_t>();} return nullptr; }
-               private:
-               void set_index(index_type i) {index = i; base::set();}
-               union union_type
-               {
-                       char dummy1[sizeof(sgNBPDCPpresent_t)];
-                       char dummy2[sizeof(sgNBPDCPnotpresent_t)];
-
-               };
-               asn::variant<sizeof(union_type)>        var;
-               index_type      index {0};
-       };
-       resource_configuration_t& ref_resource_configuration() {return resource_configuration;}
-       resource_configuration_t const& ref_resource_configuration() const {return resource_configuration;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_AdmittedToBeModified_SgNBModConf_ItemExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(en_DC_ResourceConfiguration);
-               v(resource_configuration);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(en_DC_ResourceConfiguration);
-               v(resource_configuration);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               en_DC_ResourceConfiguration.clear();
-               resource_configuration.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       en_DC_ResourceConfiguration_t   en_DC_ResourceConfiguration;
-       resource_configuration_t        resource_configuration;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-AdmittedToBeModified-SgNBModConf-ItemIEs X2AP-PROTOCOL-IES ::= {
-{ ID id-E-RABs-AdmittedToBeModified-SgNBModConf-Item    CRITICALITY ignore     TYPE E-RABs-AdmittedToBeModified-SgNBModConf-Item        PRESENCE mandatory },
-       ...
-}
-*/
-
-struct E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_AdmittedToBeModified_SgNBModConf_Item() { set(id_E_RABs_AdmittedToBeModified_SgNBModConf_Item); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_E_RABs_AdmittedToBeModified_SgNBModConf_Item)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_E_RABs_AdmittedToBeModified_SgNBModConf_Item);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_AdmittedToBeModified_SgNBModConf_Item() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               E_RABs_AdmittedToBeModified_SgNBModConf_Item& select_id_E_RABs_AdmittedToBeModified_SgNBModConf_Item() { return set<E_RABs_AdmittedToBeModified_SgNBModConf_Item>(1); }
-               E_RABs_AdmittedToBeModified_SgNBModConf_Item const* get_id_E_RABs_AdmittedToBeModified_SgNBModConf_Item() const { return get<E_RABs_AdmittedToBeModified_SgNBModConf_Item>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<E_RABs_AdmittedToBeModified_SgNBModConf_Item>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<E_RABs_AdmittedToBeModified_SgNBModConf_Item>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_E_RABs_AdmittedToBeModified_SgNBModConf_Item()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<E_RABs_AdmittedToBeModified_SgNBModConf_Item>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(E_RABs_AdmittedToBeModified_SgNBModConf_Item)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_AdmittedToBeModified_SgNBModConf_Item() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-AdmittedToBeModified-SgNBModConfList ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container
-       { {E-RABs-AdmittedToBeModified-SgNBModConf-ItemIEs} }
-*/
-
-struct E_RABs_AdmittedToBeModified_SgNBModConfList_elm : ProtocolIE_Single_Container<E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs>
-{
-       static constexpr const char* name() {return "E_RABs_AdmittedToBeModified_SgNBModConfList_elm";}
-       using parent_t = ProtocolIE_Single_Container<E_RABs_AdmittedToBeModified_SgNBModConf_ItemIEs>;
-
-};
-struct E_RABs_AdmittedToBeModified_SgNBModConfList : asn::sequenceof<E_RABs_AdmittedToBeModified_SgNBModConfList_elm>
-{
-       static constexpr const char* name() {return "E-RABs-AdmittedToBeModified-SgNBModConfList";}
-       using parent_t = asn::sequenceof<E_RABs_AdmittedToBeModified_SgNBModConfList_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxnoofBearers >>;
-
-};
-/*
-E-RABs-SubjectToCounterCheckItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_SubjectToCounterCheckItemExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-SubjectToCounterCheckItem ::= SEQUENCE {
-       e-RAB-ID                                                E-RAB-ID,
-       uL-Count                                                INTEGER (0..4294967295),
-       dL-Count                                                INTEGER (0..4294967295),
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-SubjectToCounterCheckItemExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_SubjectToCounterCheckItem : asn::sequence<4, 0, true, 1>
-{
-       static constexpr const char* name() {return "E-RABs-SubjectToCounterCheckItem";}
-       using parent_t = asn::sequence<4, 0, true, 1>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct uL_Count_t : asn::integer<>
-       {
-               using constraint_t = asn::constraints<false,asn::span<0, 4294967295>>;
-               static constexpr const char* name() {return "uL_Count_t";}
-               using parent_t = asn::integer<>;
-
-       };
-
-       uL_Count_t& ref_uL_Count() {return uL_Count;}
-       uL_Count_t const& ref_uL_Count() const {return uL_Count;}
-       struct dL_Count_t : asn::integer<>
-       {
-               using constraint_t = asn::constraints<false,asn::span<0, 4294967295>>;
-               static constexpr const char* name() {return "dL_Count_t";}
-               using parent_t = asn::integer<>;
-
-       };
-
-       dL_Count_t& ref_dL_Count() {return dL_Count;}
-       dL_Count_t const& ref_dL_Count() const {return dL_Count;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_SubjectToCounterCheckItemExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_SubjectToCounterCheckItemExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(uL_Count);
-               v(dL_Count);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(uL_Count);
-               v(dL_Count);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               uL_Count.clear();
-               dL_Count.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       uL_Count_t      uL_Count;
-       dL_Count_t      dL_Count;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-SubjectToCounterCheckItemIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-E-RABs-SubjectToCounterCheckItem        CRITICALITY ignore      TYPE E-RABs-SubjectToCounterCheckItem           PRESENCE mandatory},
-       ...
-}
-*/
-
-struct E_RABs_SubjectToCounterCheckItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_SubjectToCounterCheckItem() { set(id_E_RABs_SubjectToCounterCheckItem); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_E_RABs_SubjectToCounterCheckItem)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_E_RABs_SubjectToCounterCheckItem);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_SubjectToCounterCheckItem() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               E_RABs_SubjectToCounterCheckItem& select_id_E_RABs_SubjectToCounterCheckItem() { return set<E_RABs_SubjectToCounterCheckItem>(1); }
-               E_RABs_SubjectToCounterCheckItem const* get_id_E_RABs_SubjectToCounterCheckItem() const { return get<E_RABs_SubjectToCounterCheckItem>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<E_RABs_SubjectToCounterCheckItem>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<E_RABs_SubjectToCounterCheckItem>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_E_RABs_SubjectToCounterCheckItem()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<E_RABs_SubjectToCounterCheckItem>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(E_RABs_SubjectToCounterCheckItem)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_SubjectToCounterCheckItem() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-SubjectToCounterCheck-List ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-SubjectToCounterCheckItemIEs} }
-*/
-
-struct E_RABs_SubjectToCounterCheck_List_elm : ProtocolIE_Single_Container<E_RABs_SubjectToCounterCheckItemIEs>
-{
-       static constexpr const char* name() {return "E_RABs_SubjectToCounterCheck_List_elm";}
-       using parent_t = ProtocolIE_Single_Container<E_RABs_SubjectToCounterCheckItemIEs>;
-
-};
-struct E_RABs_SubjectToCounterCheck_List : asn::sequenceof<E_RABs_SubjectToCounterCheck_List_elm>
-{
-       static constexpr const char* name() {return "E-RABs-SubjectToCounterCheck-List";}
-       using parent_t = asn::sequenceof<E_RABs_SubjectToCounterCheck_List_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxnoofBearers >>;
-
-};
-/*
-E-RABs-SubjectToSgNBCounterCheck-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-SubjectToSgNBCounterCheck-Item ::= SEQUENCE {
-       e-RAB-ID                                                E-RAB-ID,
-       uL-Count                                                INTEGER (0..4294967295),
-       dL-Count                                                INTEGER (0..4294967295),
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-SubjectToSgNBCounterCheck-ItemExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_SubjectToSgNBCounterCheck_Item : asn::sequence<4, 0, true, 1>
-{
-       static constexpr const char* name() {return "E-RABs-SubjectToSgNBCounterCheck-Item";}
-       using parent_t = asn::sequence<4, 0, true, 1>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct uL_Count_t : asn::integer<>
-       {
-               using constraint_t = asn::constraints<false,asn::span<0, 4294967295>>;
-               static constexpr const char* name() {return "uL_Count_t";}
-               using parent_t = asn::integer<>;
-
-       };
-
-       uL_Count_t& ref_uL_Count() {return uL_Count;}
-       uL_Count_t const& ref_uL_Count() const {return uL_Count;}
-       struct dL_Count_t : asn::integer<>
-       {
-               using constraint_t = asn::constraints<false,asn::span<0, 4294967295>>;
-               static constexpr const char* name() {return "dL_Count_t";}
-               using parent_t = asn::integer<>;
-
-       };
-
-       dL_Count_t& ref_dL_Count() {return dL_Count;}
-       dL_Count_t const& ref_dL_Count() const {return dL_Count;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_SubjectToSgNBCounterCheck_ItemExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(uL_Count);
-               v(dL_Count);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(uL_Count);
-               v(dL_Count);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               uL_Count.clear();
-               dL_Count.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       uL_Count_t      uL_Count;
-       dL_Count_t      dL_Count;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-SubjectToSgNBCounterCheck-ItemIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-E-RABs-SubjectToSgNBCounterCheck-Item           CRITICALITY ignore      TYPE E-RABs-SubjectToSgNBCounterCheck-Item              PRESENCE mandatory},
-       ...
-}
-*/
-
-struct E_RABs_SubjectToSgNBCounterCheck_ItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_SubjectToSgNBCounterCheck_Item() { set(id_E_RABs_SubjectToSgNBCounterCheck_Item); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_E_RABs_SubjectToSgNBCounterCheck_Item)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_E_RABs_SubjectToSgNBCounterCheck_Item);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_SubjectToSgNBCounterCheck_Item() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               E_RABs_SubjectToSgNBCounterCheck_Item& select_id_E_RABs_SubjectToSgNBCounterCheck_Item() { return set<E_RABs_SubjectToSgNBCounterCheck_Item>(1); }
-               E_RABs_SubjectToSgNBCounterCheck_Item const* get_id_E_RABs_SubjectToSgNBCounterCheck_Item() const { return get<E_RABs_SubjectToSgNBCounterCheck_Item>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<E_RABs_SubjectToSgNBCounterCheck_Item>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<E_RABs_SubjectToSgNBCounterCheck_Item>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_E_RABs_SubjectToSgNBCounterCheck_Item()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<E_RABs_SubjectToSgNBCounterCheck_Item>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(E_RABs_SubjectToSgNBCounterCheck_Item)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_SubjectToSgNBCounterCheck_Item() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-SubjectToSgNBCounterCheck-List ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-SubjectToSgNBCounterCheck-ItemIEs} }
-*/
-
-struct E_RABs_SubjectToSgNBCounterCheck_List_elm : ProtocolIE_Single_Container<E_RABs_SubjectToSgNBCounterCheck_ItemIEs>
-{
-       static constexpr const char* name() {return "E_RABs_SubjectToSgNBCounterCheck_List_elm";}
-       using parent_t = ProtocolIE_Single_Container<E_RABs_SubjectToSgNBCounterCheck_ItemIEs>;
-
-};
-struct E_RABs_SubjectToSgNBCounterCheck_List : asn::sequenceof<E_RABs_SubjectToSgNBCounterCheck_List_elm>
-{
-       static constexpr const char* name() {return "E-RABs-SubjectToSgNBCounterCheck-List";}
-       using parent_t = asn::sequenceof<E_RABs_SubjectToSgNBCounterCheck_List_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxnoofBearers >>;
-
-};
-/*
-E-RABs-SubjectToStatusTransfer-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       { ID id-ReceiveStatusOfULPDCPSDUsExtended                       CRITICALITY ignore      EXTENSION ReceiveStatusOfULPDCPSDUsExtended                     PRESENCE optional}|
-       { ID id-ULCOUNTValueExtended                                            CRITICALITY ignore      EXTENSION COUNTValueExtended                                                            PRESENCE optional}|
-       { ID id-DLCOUNTValueExtended                                            CRITICALITY ignore      EXTENSION COUNTValueExtended                                                            PRESENCE optional}|
-       { ID id-ReceiveStatusOfULPDCPSDUsPDCP-SNlength18        CRITICALITY ignore      EXTENSION ReceiveStatusOfULPDCPSDUsPDCP-SNlength18      PRESENCE optional}|
-       { ID id-ULCOUNTValuePDCP-SNlength18                                     CRITICALITY ignore      EXTENSION COUNTvaluePDCP-SNlength18                                             PRESENCE optional}|
-       { ID id-DLCOUNTValuePDCP-SNlength18                                     CRITICALITY ignore      EXTENSION COUNTvaluePDCP-SNlength18                                             PRESENCE optional},
-       ...
-}
-*/
-
-struct E_RABs_SubjectToStatusTransfer_ItemExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 7; }
-               void clear() {type = 0;}
-               void select_id_ReceiveStatusOfULPDCPSDUsExtended() { set(id_ReceiveStatusOfULPDCPSDUsExtended); type=1;}
-               void select_id_ULCOUNTValueExtended() { set(id_ULCOUNTValueExtended); type=2;}
-               void select_id_DLCOUNTValueExtended() { set(id_DLCOUNTValueExtended); type=3;}
-               void select_id_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18() { set(id_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18); type=4;}
-               void select_id_ULCOUNTValuePDCP_SNlength18() { set(id_ULCOUNTValuePDCP_SNlength18); type=5;}
-               void select_id_DLCOUNTValuePDCP_SNlength18() { set(id_DLCOUNTValuePDCP_SNlength18); type=6;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_ReceiveStatusOfULPDCPSDUsExtended)) { type = 1; return true; }
-                       else if(equal(id_ULCOUNTValueExtended)) { type = 2; return true; }
-                       else if(equal(id_DLCOUNTValueExtended)) { type = 3; return true; }
-                       else if(equal(id_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18)) { type = 4; return true; }
-                       else if(equal(id_ULCOUNTValuePDCP_SNlength18)) { type = 5; return true; }
-                       else if(equal(id_DLCOUNTValuePDCP_SNlength18)) { type = 6; return true; }
-                       else { type = 7; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_ReceiveStatusOfULPDCPSDUsExtended);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_ULCOUNTValueExtended);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_DLCOUNTValueExtended);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_ULCOUNTValuePDCP_SNlength18);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(id_DLCOUNTValuePDCP_SNlength18);} return false;
-                       case 7: type = 7; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 7; }
-               void clear() {type = 0;}
-               void select_id_ReceiveStatusOfULPDCPSDUsExtended() { set(ignore); type=1;}
-               void select_id_ULCOUNTValueExtended() { set(ignore); type=2;}
-               void select_id_DLCOUNTValueExtended() { set(ignore); type=3;}
-               void select_id_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18() { set(ignore); type=4;}
-               void select_id_ULCOUNTValuePDCP_SNlength18() { set(ignore); type=5;}
-               void select_id_DLCOUNTValuePDCP_SNlength18() { set(ignore); type=6;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else if(equal(ignore)) { type = 5; return true; }
-                       else if(equal(ignore)) { type = 6; return true; }
-                       else { type = 7; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 7: type = 7; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               ReceiveStatusOfULPDCPSDUsExtended& select_id_ReceiveStatusOfULPDCPSDUsExtended() { return set<ReceiveStatusOfULPDCPSDUsExtended>(1); }
-               ReceiveStatusOfULPDCPSDUsExtended const* get_id_ReceiveStatusOfULPDCPSDUsExtended() const { return get<ReceiveStatusOfULPDCPSDUsExtended>(1); }
-               COUNTValueExtended& select_id_ULCOUNTValueExtended() { return set<COUNTValueExtended>(2); }
-               COUNTValueExtended const* get_id_ULCOUNTValueExtended() const { return get<COUNTValueExtended>(2); }
-               COUNTValueExtended& select_id_DLCOUNTValueExtended() { return set<COUNTValueExtended>(3); }
-               COUNTValueExtended const* get_id_DLCOUNTValueExtended() const { return get<COUNTValueExtended>(3); }
-               ReceiveStatusOfULPDCPSDUsPDCP_SNlength18& select_id_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18() { return set<ReceiveStatusOfULPDCPSDUsPDCP_SNlength18>(4); }
-               ReceiveStatusOfULPDCPSDUsPDCP_SNlength18 const* get_id_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18() const { return get<ReceiveStatusOfULPDCPSDUsPDCP_SNlength18>(4); }
-               COUNTvaluePDCP_SNlength18& select_id_ULCOUNTValuePDCP_SNlength18() { return set<COUNTvaluePDCP_SNlength18>(5); }
-               COUNTvaluePDCP_SNlength18 const* get_id_ULCOUNTValuePDCP_SNlength18() const { return get<COUNTvaluePDCP_SNlength18>(5); }
-               COUNTvaluePDCP_SNlength18& select_id_DLCOUNTValuePDCP_SNlength18() { return set<COUNTvaluePDCP_SNlength18>(6); }
-               COUNTvaluePDCP_SNlength18 const* get_id_DLCOUNTValuePDCP_SNlength18() const { return get<COUNTvaluePDCP_SNlength18>(6); }
-               bool is_unknown() const { return type == 7; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<ReceiveStatusOfULPDCPSDUsExtended>(); break;
-                       case 2: var.destroy<COUNTValueExtended>(); break;
-                       case 3: var.destroy<COUNTValueExtended>(); break;
-                       case 4: var.destroy<ReceiveStatusOfULPDCPSDUsPDCP_SNlength18>(); break;
-                       case 5: var.destroy<COUNTvaluePDCP_SNlength18>(); break;
-                       case 6: var.destroy<COUNTvaluePDCP_SNlength18>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<ReceiveStatusOfULPDCPSDUsExtended>(1);
-                       v.template operator()<COUNTValueExtended>(2);
-                       v.template operator()<COUNTValueExtended>(3);
-                       v.template operator()<ReceiveStatusOfULPDCPSDUsPDCP_SNlength18>(4);
-                       v.template operator()<COUNTvaluePDCP_SNlength18>(5);
-                       v.template operator()<COUNTvaluePDCP_SNlength18>(6);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_ReceiveStatusOfULPDCPSDUsExtended()); return true;
-                       case 2: v(select_id_ULCOUNTValueExtended()); return true;
-                       case 3: v(select_id_DLCOUNTValueExtended()); return true;
-                       case 4: v(select_id_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18()); return true;
-                       case 5: v(select_id_ULCOUNTValuePDCP_SNlength18()); return true;
-                       case 6: v(select_id_DLCOUNTValuePDCP_SNlength18()); return true;
-                       case 7: if(type != 7) {clear(); asn::base::set();} type = 7; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<ReceiveStatusOfULPDCPSDUsExtended>()); return true;
-                       case 2: v(var.as<COUNTValueExtended>()); return true;
-                       case 3: v(var.as<COUNTValueExtended>()); return true;
-                       case 4: v(var.as<ReceiveStatusOfULPDCPSDUsPDCP_SNlength18>()); return true;
-                       case 5: v(var.as<COUNTvaluePDCP_SNlength18>()); return true;
-                       case 6: v(var.as<COUNTvaluePDCP_SNlength18>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(COUNTValueExtended)];
-                       char dummy2[sizeof(COUNTvaluePDCP_SNlength18)];
-                       char dummy3[sizeof(ReceiveStatusOfULPDCPSDUsExtended)];
-                       char dummy4[sizeof(ReceiveStatusOfULPDCPSDUsPDCP_SNlength18)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 7; }
-               void clear() {type = 0;}
-               void select_id_ReceiveStatusOfULPDCPSDUsExtended() { set(optional); type=1;}
-               void select_id_ULCOUNTValueExtended() { set(optional); type=2;}
-               void select_id_DLCOUNTValueExtended() { set(optional); type=3;}
-               void select_id_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18() { set(optional); type=4;}
-               void select_id_ULCOUNTValuePDCP_SNlength18() { set(optional); type=5;}
-               void select_id_DLCOUNTValuePDCP_SNlength18() { set(optional); type=6;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(optional)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else if(equal(optional)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else if(equal(optional)) { type = 6; return true; }
-                       else { type = 7; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 7: type = 7; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-SubjectToStatusTransfer-Item ::= SEQUENCE {
-       e-RAB-ID                                                                E-RAB-ID,
-
-       receiveStatusofULPDCPSDUs                               ReceiveStatusofULPDCPSDUs                       OPTIONAL,
-       uL-COUNTvalue                                   COUNTvalue,
-       dL-COUNTvalue                                   COUNTvalue,
-       iE-Extensions                                                   ProtocolExtensionContainer { {E-RABs-SubjectToStatusTransfer-ItemExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_SubjectToStatusTransfer_Item : asn::sequence<5, 0, true, 2>
-{
-       static constexpr const char* name() {return "E-RABs-SubjectToStatusTransfer-Item";}
-       using parent_t = asn::sequence<5, 0, true, 2>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct receiveStatusofULPDCPSDUs_t : ReceiveStatusofULPDCPSDUs
-       {
-               static constexpr const char* name() {return "receiveStatusofULPDCPSDUs_t";}
-               using parent_t = ReceiveStatusofULPDCPSDUs;
-               static constexpr bool optional = true;
-
-       };
-       receiveStatusofULPDCPSDUs_t& set_receiveStatusofULPDCPSDUs() { receiveStatusofULPDCPSDUs.setpresent(true); return receiveStatusofULPDCPSDUs;}
-       receiveStatusofULPDCPSDUs_t const* get_receiveStatusofULPDCPSDUs() const {return receiveStatusofULPDCPSDUs.is_valid() ? &receiveStatusofULPDCPSDUs : nullptr;}
-       struct uL_COUNTvalue_t : COUNTvalue
-       {
-               static constexpr const char* name() {return "uL_COUNTvalue_t";}
-               using parent_t = COUNTvalue;
-
-       };
-       uL_COUNTvalue_t& ref_uL_COUNTvalue() {return uL_COUNTvalue;}
-       uL_COUNTvalue_t const& ref_uL_COUNTvalue() const {return uL_COUNTvalue;}
-       struct dL_COUNTvalue_t : COUNTvalue
-       {
-               static constexpr const char* name() {return "dL_COUNTvalue_t";}
-               using parent_t = COUNTvalue;
-
-       };
-       dL_COUNTvalue_t& ref_dL_COUNTvalue() {return dL_COUNTvalue;}
-       dL_COUNTvalue_t const& ref_dL_COUNTvalue() const {return dL_COUNTvalue;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_SubjectToStatusTransfer_ItemExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_SubjectToStatusTransfer_ItemExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(receiveStatusofULPDCPSDUs);
-               v(uL_COUNTvalue);
-               v(dL_COUNTvalue);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(receiveStatusofULPDCPSDUs);
-               v(uL_COUNTvalue);
-               v(dL_COUNTvalue);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               receiveStatusofULPDCPSDUs.clear();
-               uL_COUNTvalue.clear();
-               dL_COUNTvalue.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       receiveStatusofULPDCPSDUs_t     receiveStatusofULPDCPSDUs;
-       uL_COUNTvalue_t uL_COUNTvalue;
-       dL_COUNTvalue_t dL_COUNTvalue;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-SubjectToStatusTransfer-ItemIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-E-RABs-SubjectToStatusTransfer-Item     CRITICALITY ignore      TYPE E-RABs-SubjectToStatusTransfer-Item        PRESENCE mandatory      }
-}
-*/
-
-struct E_RABs_SubjectToStatusTransfer_ItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_E_RABs_SubjectToStatusTransfer_Item() { set(id_E_RABs_SubjectToStatusTransfer_Item); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_E_RABs_SubjectToStatusTransfer_Item)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_E_RABs_SubjectToStatusTransfer_Item);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_E_RABs_SubjectToStatusTransfer_Item() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<false>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               E_RABs_SubjectToStatusTransfer_Item& select_id_E_RABs_SubjectToStatusTransfer_Item() { return set<E_RABs_SubjectToStatusTransfer_Item>(1); }
-               E_RABs_SubjectToStatusTransfer_Item const* get_id_E_RABs_SubjectToStatusTransfer_Item() const { return get<E_RABs_SubjectToStatusTransfer_Item>(1); }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<E_RABs_SubjectToStatusTransfer_Item>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<E_RABs_SubjectToStatusTransfer_Item>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_E_RABs_SubjectToStatusTransfer_Item()); return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<E_RABs_SubjectToStatusTransfer_Item>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(E_RABs_SubjectToStatusTransfer_Item)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_E_RABs_SubjectToStatusTransfer_Item() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-SubjectToStatusTransfer-List    ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-SubjectToStatusTransfer-ItemIEs} }
-*/
-
-struct E_RABs_SubjectToStatusTransfer_List_elm : ProtocolIE_Single_Container<E_RABs_SubjectToStatusTransfer_ItemIEs>
-{
-       static constexpr const char* name() {return "E_RABs_SubjectToStatusTransfer_List_elm";}
-       using parent_t = ProtocolIE_Single_Container<E_RABs_SubjectToStatusTransfer_ItemIEs>;
-
-};
-struct E_RABs_SubjectToStatusTransfer_List : asn::sequenceof<E_RABs_SubjectToStatusTransfer_List_elm>
-{
-       static constexpr const char* name() {return "E-RABs-SubjectToStatusTransfer-List";}
-       using parent_t = asn::sequenceof<E_RABs_SubjectToStatusTransfer_List_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxnoofBearers >>;
-
-};
-/*
-E-RABs-ToBeAdded-Item-SCG-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       { ID id-Correlation-ID                          CRITICALITY ignore      EXTENSION Correlation-ID                PRESENCE optional}|
-       { ID id-SIPTO-Correlation-ID            CRITICALITY ignore      EXTENSION Correlation-ID                PRESENCE optional},
-       ...
-}
-*/
-
-struct E_RABs_ToBeAdded_Item_SCG_BearerExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_Correlation_ID() { set(id_Correlation_ID); type=1;}
-               void select_id_SIPTO_Correlation_ID() { set(id_SIPTO_Correlation_ID); type=2;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_Correlation_ID)) { type = 1; return true; }
-                       else if(equal(id_SIPTO_Correlation_ID)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_Correlation_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SIPTO_Correlation_ID);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_Correlation_ID() { set(ignore); type=1;}
-               void select_id_SIPTO_Correlation_ID() { set(ignore); type=2;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               Correlation_ID& select_id_Correlation_ID() { return set<Correlation_ID>(1); }
-               Correlation_ID const* get_id_Correlation_ID() const { return get<Correlation_ID>(1); }
-               Correlation_ID& select_id_SIPTO_Correlation_ID() { return set<Correlation_ID>(2); }
-               Correlation_ID const* get_id_SIPTO_Correlation_ID() const { return get<Correlation_ID>(2); }
-               bool is_unknown() const { return type == 3; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<Correlation_ID>(); break;
-                       case 2: var.destroy<Correlation_ID>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<Correlation_ID>(1);
-                       v.template operator()<Correlation_ID>(2);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_Correlation_ID()); return true;
-                       case 2: v(select_id_SIPTO_Correlation_ID()); return true;
-                       case 3: if(type != 3) {clear(); asn::base::set();} type = 3; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<Correlation_ID>()); return true;
-                       case 2: v(var.as<Correlation_ID>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(Correlation_ID)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_Correlation_ID() { set(optional); type=1;}
-               void select_id_SIPTO_Correlation_ID() { set(optional); type=2;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(optional)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeAdded-Item-SCG-Bearer ::= SEQUENCE {
-       e-RAB-ID                                                E-RAB-ID,
-       e-RAB-Level-QoS-Parameters              E-RAB-Level-QoS-Parameters,
-       dL-Forwarding                                   DL-Forwarding                                                                                                                                   OPTIONAL,
-       s1-UL-GTPtunnelEndpoint                 GTPtunnelEndpoint,
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeAdded-Item-SCG-BearerExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeAdded_Item_SCG_Bearer : asn::sequence<5, 0, true, 2>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeAdded-Item-SCG-Bearer";}
-       using parent_t = asn::sequence<5, 0, true, 2>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct e_RAB_Level_QoS_Parameters_t : E_RAB_Level_QoS_Parameters
-       {
-               static constexpr const char* name() {return "e_RAB_Level_QoS_Parameters_t";}
-               using parent_t = E_RAB_Level_QoS_Parameters;
-
-       };
-       e_RAB_Level_QoS_Parameters_t& ref_e_RAB_Level_QoS_Parameters() {return e_RAB_Level_QoS_Parameters;}
-       e_RAB_Level_QoS_Parameters_t const& ref_e_RAB_Level_QoS_Parameters() const {return e_RAB_Level_QoS_Parameters;}
-       struct dL_Forwarding_t : DL_Forwarding
-       {
-               static constexpr const char* name() {return "dL_Forwarding_t";}
-               using parent_t = DL_Forwarding;
-               static constexpr bool optional = true;
-
-       };
-       dL_Forwarding_t& set_dL_Forwarding() { dL_Forwarding.setpresent(true); return dL_Forwarding;}
-       dL_Forwarding_t const* get_dL_Forwarding() const {return dL_Forwarding.is_valid() ? &dL_Forwarding : nullptr;}
-       struct s1_UL_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "s1_UL_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-
-       };
-       s1_UL_GTPtunnelEndpoint_t& ref_s1_UL_GTPtunnelEndpoint() {return s1_UL_GTPtunnelEndpoint;}
-       s1_UL_GTPtunnelEndpoint_t const& ref_s1_UL_GTPtunnelEndpoint() const {return s1_UL_GTPtunnelEndpoint;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeAdded_Item_SCG_BearerExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeAdded_Item_SCG_BearerExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(e_RAB_Level_QoS_Parameters);
-               v(dL_Forwarding);
-               v(s1_UL_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(e_RAB_Level_QoS_Parameters);
-               v(dL_Forwarding);
-               v(s1_UL_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               e_RAB_Level_QoS_Parameters.clear();
-               dL_Forwarding.clear();
-               s1_UL_GTPtunnelEndpoint.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       e_RAB_Level_QoS_Parameters_t    e_RAB_Level_QoS_Parameters;
-       dL_Forwarding_t dL_Forwarding;
-       s1_UL_GTPtunnelEndpoint_t       s1_UL_GTPtunnelEndpoint;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeAdded-Item-Split-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_ToBeAdded_Item_Split_BearerExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeAdded-Item-Split-Bearer ::= SEQUENCE {
-       e-RAB-ID                                                E-RAB-ID,
-       e-RAB-Level-QoS-Parameters              E-RAB-Level-QoS-Parameters,
-       meNB-GTPtunnelEndpoint                  GTPtunnelEndpoint,
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeAdded-Item-Split-BearerExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeAdded_Item_Split_Bearer : asn::sequence<4, 0, true, 1>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeAdded-Item-Split-Bearer";}
-       using parent_t = asn::sequence<4, 0, true, 1>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct e_RAB_Level_QoS_Parameters_t : E_RAB_Level_QoS_Parameters
-       {
-               static constexpr const char* name() {return "e_RAB_Level_QoS_Parameters_t";}
-               using parent_t = E_RAB_Level_QoS_Parameters;
-
-       };
-       e_RAB_Level_QoS_Parameters_t& ref_e_RAB_Level_QoS_Parameters() {return e_RAB_Level_QoS_Parameters;}
-       e_RAB_Level_QoS_Parameters_t const& ref_e_RAB_Level_QoS_Parameters() const {return e_RAB_Level_QoS_Parameters;}
-       struct meNB_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "meNB_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-
-       };
-       meNB_GTPtunnelEndpoint_t& ref_meNB_GTPtunnelEndpoint() {return meNB_GTPtunnelEndpoint;}
-       meNB_GTPtunnelEndpoint_t const& ref_meNB_GTPtunnelEndpoint() const {return meNB_GTPtunnelEndpoint;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeAdded_Item_Split_BearerExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeAdded_Item_Split_BearerExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(e_RAB_Level_QoS_Parameters);
-               v(meNB_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(e_RAB_Level_QoS_Parameters);
-               v(meNB_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               e_RAB_Level_QoS_Parameters.clear();
-               meNB_GTPtunnelEndpoint.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       e_RAB_Level_QoS_Parameters_t    e_RAB_Level_QoS_Parameters;
-       meNB_GTPtunnelEndpoint_t        meNB_GTPtunnelEndpoint;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeAdded-Item ::= CHOICE {
-       sCG-Bearer              E-RABs-ToBeAdded-Item-SCG-Bearer,
-       split-Bearer    E-RABs-ToBeAdded-Item-Split-Bearer,
-       ...
-}
-*/
-
-struct E_RABs_ToBeAdded_Item : asn::choice<2, 0, true>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeAdded-Item";}
-       using parent_t = asn::choice<2, 0, true>;
-       index_type get_index() const {return index;}
-       bool is_unknown() const {return index == 3;}
-       void set_unknown() { set_index(3);  }
-       ~E_RABs_ToBeAdded_Item() {clear();}
-       struct sCG_Bearer_t : E_RABs_ToBeAdded_Item_SCG_Bearer
-       {
-               static constexpr const char* name() {return "sCG_Bearer_t";}
-               using parent_t = E_RABs_ToBeAdded_Item_SCG_Bearer;
-
-       };
-       struct split_Bearer_t : E_RABs_ToBeAdded_Item_Split_Bearer
-       {
-               static constexpr const char* name() {return "split_Bearer_t";}
-               using parent_t = E_RABs_ToBeAdded_Item_Split_Bearer;
-
-       };
-       void clear()
-       {
-               switch(get_index())
-               {
-               case 1: var.destroy<sCG_Bearer_t>(); break;
-               case 2: var.destroy<split_Bearer_t>(); break;
-               }
-               index = 0;
-               base::clear();
-       }
-       template<typename V> bool decode(size_t idx, V& v)
-       {
-               clear();
-               switch(idx)
-               {
-               case 1: set_index(1); return v(var.build<sCG_Bearer_t>());
-               case 2: set_index(2); return v(var.build<split_Bearer_t>());
-               }
-               return false;
-
-       }
-       template<typename V> bool encode(V& v) const
-       {
-               switch(get_index())
-               {
-               case 1: return v(var.as<sCG_Bearer_t>());
-               case 2: return v(var.as<split_Bearer_t>());
-               }
-               return false;
-       }
-       template<typename V> static inline void enumerate(V& v)
-       {
-               v.template operator()<sCG_Bearer_t>(1);
-               v.template operator()<split_Bearer_t>(2);
-
-       }
-       sCG_Bearer_t& select_sCG_Bearer() { if(get_index() != 1) { clear(); set_index(1); return var.build<sCG_Bearer_t>();} return var.as<sCG_Bearer_t>();}
-       sCG_Bearer_t const* get_sCG_Bearer() const { if(get_index() == 1) { return &var.as<sCG_Bearer_t>();} return nullptr; }
-       split_Bearer_t& select_split_Bearer() { if(get_index() != 2) { clear(); set_index(2); return var.build<split_Bearer_t>();} return var.as<split_Bearer_t>();}
-       split_Bearer_t const* get_split_Bearer() const { if(get_index() == 2) { return &var.as<split_Bearer_t>();} return nullptr; }
-       private:
-       void set_index(index_type i) {index = i; base::set();}
-       union union_type
-       {
-               char dummy1[sizeof(sCG_Bearer_t)];
-               char dummy2[sizeof(split_Bearer_t)];
-
-       };
-       asn::variant<sizeof(union_type)>        var;
-       index_type      index {0};
-};
-/*
-E-RABs-ToBeAdded-ItemIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-E-RABs-ToBeAdded-Item   CRITICALITY reject      TYPE E-RABs-ToBeAdded-Item              PRESENCE mandatory},
-       ...
-}
-*/
-
-struct E_RABs_ToBeAdded_ItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeAdded_Item() { set(id_E_RABs_ToBeAdded_Item); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_E_RABs_ToBeAdded_Item)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_E_RABs_ToBeAdded_Item);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeAdded_Item() { set(reject); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               E_RABs_ToBeAdded_Item& select_id_E_RABs_ToBeAdded_Item() { return set<E_RABs_ToBeAdded_Item>(1); }
-               E_RABs_ToBeAdded_Item const* get_id_E_RABs_ToBeAdded_Item() const { return get<E_RABs_ToBeAdded_Item>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<E_RABs_ToBeAdded_Item>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<E_RABs_ToBeAdded_Item>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_E_RABs_ToBeAdded_Item()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<E_RABs_ToBeAdded_Item>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(E_RABs_ToBeAdded_Item)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeAdded_Item() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeAdded-List ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeAdded-ItemIEs} }
-*/
-
-struct E_RABs_ToBeAdded_List_elm : ProtocolIE_Single_Container<E_RABs_ToBeAdded_ItemIEs>
-{
-       static constexpr const char* name() {return "E_RABs_ToBeAdded_List_elm";}
-       using parent_t = ProtocolIE_Single_Container<E_RABs_ToBeAdded_ItemIEs>;
-
-};
-struct E_RABs_ToBeAdded_List : asn::sequenceof<E_RABs_ToBeAdded_List_elm>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeAdded-List";}
-       using parent_t = asn::sequenceof<E_RABs_ToBeAdded_List_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxnoofBearers >>;
-
-};
-/*
-E-RABs-ToBeAdded-ModReqItem-SCG-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       { ID id-Correlation-ID                          CRITICALITY ignore      EXTENSION Correlation-ID                PRESENCE optional}|
-       { ID id-SIPTO-Correlation-ID            CRITICALITY ignore      EXTENSION Correlation-ID                PRESENCE optional},
-       ...
-}
-*/
-
-struct E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_Correlation_ID() { set(id_Correlation_ID); type=1;}
-               void select_id_SIPTO_Correlation_ID() { set(id_SIPTO_Correlation_ID); type=2;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_Correlation_ID)) { type = 1; return true; }
-                       else if(equal(id_SIPTO_Correlation_ID)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_Correlation_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SIPTO_Correlation_ID);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_Correlation_ID() { set(ignore); type=1;}
-               void select_id_SIPTO_Correlation_ID() { set(ignore); type=2;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               Correlation_ID& select_id_Correlation_ID() { return set<Correlation_ID>(1); }
-               Correlation_ID const* get_id_Correlation_ID() const { return get<Correlation_ID>(1); }
-               Correlation_ID& select_id_SIPTO_Correlation_ID() { return set<Correlation_ID>(2); }
-               Correlation_ID const* get_id_SIPTO_Correlation_ID() const { return get<Correlation_ID>(2); }
-               bool is_unknown() const { return type == 3; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<Correlation_ID>(); break;
-                       case 2: var.destroy<Correlation_ID>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<Correlation_ID>(1);
-                       v.template operator()<Correlation_ID>(2);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_Correlation_ID()); return true;
-                       case 2: v(select_id_SIPTO_Correlation_ID()); return true;
-                       case 3: if(type != 3) {clear(); asn::base::set();} type = 3; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<Correlation_ID>()); return true;
-                       case 2: v(var.as<Correlation_ID>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(Correlation_ID)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_Correlation_ID() { set(optional); type=1;}
-               void select_id_SIPTO_Correlation_ID() { set(optional); type=2;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(optional)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeAdded-ModReqItem-SCG-Bearer ::= SEQUENCE {
-       e-RAB-ID                                                E-RAB-ID,
-       e-RAB-Level-QoS-Parameters              E-RAB-Level-QoS-Parameters,
-       dL-Forwarding                                   DL-Forwarding                                                                                                                                   OPTIONAL,
-       s1-UL-GTPtunnelEndpoint                 GTPtunnelEndpoint,
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeAdded-ModReqItem-SCG-BearerExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeAdded_ModReqItem_SCG_Bearer : asn::sequence<5, 0, true, 2>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeAdded-ModReqItem-SCG-Bearer";}
-       using parent_t = asn::sequence<5, 0, true, 2>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct e_RAB_Level_QoS_Parameters_t : E_RAB_Level_QoS_Parameters
-       {
-               static constexpr const char* name() {return "e_RAB_Level_QoS_Parameters_t";}
-               using parent_t = E_RAB_Level_QoS_Parameters;
-
-       };
-       e_RAB_Level_QoS_Parameters_t& ref_e_RAB_Level_QoS_Parameters() {return e_RAB_Level_QoS_Parameters;}
-       e_RAB_Level_QoS_Parameters_t const& ref_e_RAB_Level_QoS_Parameters() const {return e_RAB_Level_QoS_Parameters;}
-       struct dL_Forwarding_t : DL_Forwarding
-       {
-               static constexpr const char* name() {return "dL_Forwarding_t";}
-               using parent_t = DL_Forwarding;
-               static constexpr bool optional = true;
-
-       };
-       dL_Forwarding_t& set_dL_Forwarding() { dL_Forwarding.setpresent(true); return dL_Forwarding;}
-       dL_Forwarding_t const* get_dL_Forwarding() const {return dL_Forwarding.is_valid() ? &dL_Forwarding : nullptr;}
-       struct s1_UL_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "s1_UL_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-
-       };
-       s1_UL_GTPtunnelEndpoint_t& ref_s1_UL_GTPtunnelEndpoint() {return s1_UL_GTPtunnelEndpoint;}
-       s1_UL_GTPtunnelEndpoint_t const& ref_s1_UL_GTPtunnelEndpoint() const {return s1_UL_GTPtunnelEndpoint;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeAdded_ModReqItem_SCG_BearerExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(e_RAB_Level_QoS_Parameters);
-               v(dL_Forwarding);
-               v(s1_UL_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(e_RAB_Level_QoS_Parameters);
-               v(dL_Forwarding);
-               v(s1_UL_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               e_RAB_Level_QoS_Parameters.clear();
-               dL_Forwarding.clear();
-               s1_UL_GTPtunnelEndpoint.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       e_RAB_Level_QoS_Parameters_t    e_RAB_Level_QoS_Parameters;
-       dL_Forwarding_t dL_Forwarding;
-       s1_UL_GTPtunnelEndpoint_t       s1_UL_GTPtunnelEndpoint;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeAdded-ModReqItem-Split-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeAdded-ModReqItem-Split-Bearer ::= SEQUENCE {
-       e-RAB-ID                                                E-RAB-ID,
-       e-RAB-Level-QoS-Parameters              E-RAB-Level-QoS-Parameters,
-       meNB-GTPtunnelEndpoint                  GTPtunnelEndpoint,
-       iE-Extensions                   ProtocolExtensionContainer { {E-RABs-ToBeAdded-ModReqItem-Split-BearerExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeAdded_ModReqItem_Split_Bearer : asn::sequence<4, 0, true, 1>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeAdded-ModReqItem-Split-Bearer";}
-       using parent_t = asn::sequence<4, 0, true, 1>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct e_RAB_Level_QoS_Parameters_t : E_RAB_Level_QoS_Parameters
-       {
-               static constexpr const char* name() {return "e_RAB_Level_QoS_Parameters_t";}
-               using parent_t = E_RAB_Level_QoS_Parameters;
-
-       };
-       e_RAB_Level_QoS_Parameters_t& ref_e_RAB_Level_QoS_Parameters() {return e_RAB_Level_QoS_Parameters;}
-       e_RAB_Level_QoS_Parameters_t const& ref_e_RAB_Level_QoS_Parameters() const {return e_RAB_Level_QoS_Parameters;}
-       struct meNB_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "meNB_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-
-       };
-       meNB_GTPtunnelEndpoint_t& ref_meNB_GTPtunnelEndpoint() {return meNB_GTPtunnelEndpoint;}
-       meNB_GTPtunnelEndpoint_t const& ref_meNB_GTPtunnelEndpoint() const {return meNB_GTPtunnelEndpoint;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeAdded_ModReqItem_Split_BearerExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(e_RAB_Level_QoS_Parameters);
-               v(meNB_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(e_RAB_Level_QoS_Parameters);
-               v(meNB_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               e_RAB_Level_QoS_Parameters.clear();
-               meNB_GTPtunnelEndpoint.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       e_RAB_Level_QoS_Parameters_t    e_RAB_Level_QoS_Parameters;
-       meNB_GTPtunnelEndpoint_t        meNB_GTPtunnelEndpoint;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeAdded-ModReqItem ::= CHOICE {
-       sCG-Bearer              E-RABs-ToBeAdded-ModReqItem-SCG-Bearer,
-       split-Bearer    E-RABs-ToBeAdded-ModReqItem-Split-Bearer,
-       ...
-}
-*/
-
-struct E_RABs_ToBeAdded_ModReqItem : asn::choice<2, 0, true>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeAdded-ModReqItem";}
-       using parent_t = asn::choice<2, 0, true>;
-       index_type get_index() const {return index;}
-       bool is_unknown() const {return index == 3;}
-       void set_unknown() { set_index(3);  }
-       ~E_RABs_ToBeAdded_ModReqItem() {clear();}
-       struct sCG_Bearer_t : E_RABs_ToBeAdded_ModReqItem_SCG_Bearer
-       {
-               static constexpr const char* name() {return "sCG_Bearer_t";}
-               using parent_t = E_RABs_ToBeAdded_ModReqItem_SCG_Bearer;
-
-       };
-       struct split_Bearer_t : E_RABs_ToBeAdded_ModReqItem_Split_Bearer
-       {
-               static constexpr const char* name() {return "split_Bearer_t";}
-               using parent_t = E_RABs_ToBeAdded_ModReqItem_Split_Bearer;
-
-       };
-       void clear()
-       {
-               switch(get_index())
-               {
-               case 1: var.destroy<sCG_Bearer_t>(); break;
-               case 2: var.destroy<split_Bearer_t>(); break;
-               }
-               index = 0;
-               base::clear();
-       }
-       template<typename V> bool decode(size_t idx, V& v)
-       {
-               clear();
-               switch(idx)
-               {
-               case 1: set_index(1); return v(var.build<sCG_Bearer_t>());
-               case 2: set_index(2); return v(var.build<split_Bearer_t>());
-               }
-               return false;
-
-       }
-       template<typename V> bool encode(V& v) const
-       {
-               switch(get_index())
-               {
-               case 1: return v(var.as<sCG_Bearer_t>());
-               case 2: return v(var.as<split_Bearer_t>());
-               }
-               return false;
-       }
-       template<typename V> static inline void enumerate(V& v)
-       {
-               v.template operator()<sCG_Bearer_t>(1);
-               v.template operator()<split_Bearer_t>(2);
-
-       }
-       sCG_Bearer_t& select_sCG_Bearer() { if(get_index() != 1) { clear(); set_index(1); return var.build<sCG_Bearer_t>();} return var.as<sCG_Bearer_t>();}
-       sCG_Bearer_t const* get_sCG_Bearer() const { if(get_index() == 1) { return &var.as<sCG_Bearer_t>();} return nullptr; }
-       split_Bearer_t& select_split_Bearer() { if(get_index() != 2) { clear(); set_index(2); return var.build<split_Bearer_t>();} return var.as<split_Bearer_t>();}
-       split_Bearer_t const* get_split_Bearer() const { if(get_index() == 2) { return &var.as<split_Bearer_t>();} return nullptr; }
-       private:
-       void set_index(index_type i) {index = i; base::set();}
-       union union_type
-       {
-               char dummy1[sizeof(sCG_Bearer_t)];
-               char dummy2[sizeof(split_Bearer_t)];
-
-       };
-       asn::variant<sizeof(union_type)>        var;
-       index_type      index {0};
-};
-/*
-E-RABs-ToBeAdded-ModReqItemIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-E-RABs-ToBeAdded-ModReqItem     CRITICALITY ignore      TYPE E-RABs-ToBeAdded-ModReqItem        PRESENCE mandatory},
-       ...
-}
-*/
-
-struct E_RABs_ToBeAdded_ModReqItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeAdded_ModReqItem() { set(id_E_RABs_ToBeAdded_ModReqItem); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_E_RABs_ToBeAdded_ModReqItem)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_E_RABs_ToBeAdded_ModReqItem);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeAdded_ModReqItem() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               E_RABs_ToBeAdded_ModReqItem& select_id_E_RABs_ToBeAdded_ModReqItem() { return set<E_RABs_ToBeAdded_ModReqItem>(1); }
-               E_RABs_ToBeAdded_ModReqItem const* get_id_E_RABs_ToBeAdded_ModReqItem() const { return get<E_RABs_ToBeAdded_ModReqItem>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<E_RABs_ToBeAdded_ModReqItem>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<E_RABs_ToBeAdded_ModReqItem>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_E_RABs_ToBeAdded_ModReqItem()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<E_RABs_ToBeAdded_ModReqItem>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(E_RABs_ToBeAdded_ModReqItem)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeAdded_ModReqItem() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeAdded-List-ModReq ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeAdded-ModReqItemIEs} }
-*/
-
-struct E_RABs_ToBeAdded_List_ModReq_elm : ProtocolIE_Single_Container<E_RABs_ToBeAdded_ModReqItemIEs>
-{
-       static constexpr const char* name() {return "E_RABs_ToBeAdded_List_ModReq_elm";}
-       using parent_t = ProtocolIE_Single_Container<E_RABs_ToBeAdded_ModReqItemIEs>;
-
-};
-struct E_RABs_ToBeAdded_List_ModReq : asn::sequenceof<E_RABs_ToBeAdded_List_ModReq_elm>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeAdded-List-ModReq";}
-       using parent_t = asn::sequenceof<E_RABs_ToBeAdded_List_ModReq_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxnoofBearers >>;
-
-};
-/*
-E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       { ID id-RLCMode-transferred                                     CRITICALITY ignore      EXTENSION RLCMode                                       PRESENCE optional},
-       ...
-}
-*/
-
-struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_RLCMode_transferred() { set(id_RLCMode_transferred); type=1;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_RLCMode_transferred)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_RLCMode_transferred);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_RLCMode_transferred() { set(ignore); type=1;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               RLCMode& select_id_RLCMode_transferred() { return set<RLCMode>(1); }
-               RLCMode const* get_id_RLCMode_transferred() const { return get<RLCMode>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<RLCMode>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<RLCMode>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_RLCMode_transferred()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<RLCMode>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(RLCMode)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_RLCMode_transferred() { set(optional); type=1;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(optional)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresent ::= SEQUENCE {
-       full-E-RAB-Level-QoS-Parameters                         E-RAB-Level-QoS-Parameters,
-       max-MCG-admit-E-RAB-Level-QoS-Parameters        GBR-QosInformation                                                                                                                      OPTIONAL,
--- This IE shall be present if MCG resource and SCG resources IEs in the the EN-DC Resource Configuration IE are set to “present” and GBR QoS Information IE is present in Full E-RAB Level QoS Parameters IE --
-       dL-Forwarding                                                           DL-Forwarding                                                                                                                                           OPTIONAL,
-       meNB-DL-GTP-TEIDatMCG                                           GTPtunnelEndpoint                                                                                                                                       OPTIONAL,
--- This IE shall be present if MCG resource IE in the the EN-DC Resource Configuration IE is set to “present” --
-       s1-UL-GTPtunnelEndpoint                                         GTPtunnelEndpoint,
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresentExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent : asn::sequence<6, 0, true, 4>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresent";}
-       using parent_t = asn::sequence<6, 0, true, 4>;
-       struct full_E_RAB_Level_QoS_Parameters_t : E_RAB_Level_QoS_Parameters
-       {
-               static constexpr const char* name() {return "full_E_RAB_Level_QoS_Parameters_t";}
-               using parent_t = E_RAB_Level_QoS_Parameters;
-
-       };
-       full_E_RAB_Level_QoS_Parameters_t& ref_full_E_RAB_Level_QoS_Parameters() {return full_E_RAB_Level_QoS_Parameters;}
-       full_E_RAB_Level_QoS_Parameters_t const& ref_full_E_RAB_Level_QoS_Parameters() const {return full_E_RAB_Level_QoS_Parameters;}
-       struct max_MCG_admit_E_RAB_Level_QoS_Parameters_t : GBR_QosInformation
-       {
-               static constexpr const char* name() {return "max_MCG_admit_E_RAB_Level_QoS_Parameters_t";}
-               using parent_t = GBR_QosInformation;
-               static constexpr bool optional = true;
-
-       };
-       max_MCG_admit_E_RAB_Level_QoS_Parameters_t& set_max_MCG_admit_E_RAB_Level_QoS_Parameters() { max_MCG_admit_E_RAB_Level_QoS_Parameters.setpresent(true); return max_MCG_admit_E_RAB_Level_QoS_Parameters;}
-       max_MCG_admit_E_RAB_Level_QoS_Parameters_t const* get_max_MCG_admit_E_RAB_Level_QoS_Parameters() const {return max_MCG_admit_E_RAB_Level_QoS_Parameters.is_valid() ? &max_MCG_admit_E_RAB_Level_QoS_Parameters : nullptr;}
-       struct dL_Forwarding_t : DL_Forwarding
-       {
-               static constexpr const char* name() {return "dL_Forwarding_t";}
-               using parent_t = DL_Forwarding;
-               static constexpr bool optional = true;
-
-       };
-       dL_Forwarding_t& set_dL_Forwarding() { dL_Forwarding.setpresent(true); return dL_Forwarding;}
-       dL_Forwarding_t const* get_dL_Forwarding() const {return dL_Forwarding.is_valid() ? &dL_Forwarding : nullptr;}
-       struct meNB_DL_GTP_TEIDatMCG_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "meNB_DL_GTP_TEIDatMCG_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       meNB_DL_GTP_TEIDatMCG_t& set_meNB_DL_GTP_TEIDatMCG() { meNB_DL_GTP_TEIDatMCG.setpresent(true); return meNB_DL_GTP_TEIDatMCG;}
-       meNB_DL_GTP_TEIDatMCG_t const* get_meNB_DL_GTP_TEIDatMCG() const {return meNB_DL_GTP_TEIDatMCG.is_valid() ? &meNB_DL_GTP_TEIDatMCG : nullptr;}
-       struct s1_UL_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "s1_UL_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-
-       };
-       s1_UL_GTPtunnelEndpoint_t& ref_s1_UL_GTPtunnelEndpoint() {return s1_UL_GTPtunnelEndpoint;}
-       s1_UL_GTPtunnelEndpoint_t const& ref_s1_UL_GTPtunnelEndpoint() const {return s1_UL_GTPtunnelEndpoint;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresentExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(full_E_RAB_Level_QoS_Parameters);
-               v(max_MCG_admit_E_RAB_Level_QoS_Parameters);
-               v(dL_Forwarding);
-               v(meNB_DL_GTP_TEIDatMCG);
-               v(s1_UL_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(full_E_RAB_Level_QoS_Parameters);
-               v(max_MCG_admit_E_RAB_Level_QoS_Parameters);
-               v(dL_Forwarding);
-               v(meNB_DL_GTP_TEIDatMCG);
-               v(s1_UL_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               full_E_RAB_Level_QoS_Parameters.clear();
-               max_MCG_admit_E_RAB_Level_QoS_Parameters.clear();
-               dL_Forwarding.clear();
-               meNB_DL_GTP_TEIDatMCG.clear();
-               s1_UL_GTPtunnelEndpoint.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       full_E_RAB_Level_QoS_Parameters_t       full_E_RAB_Level_QoS_Parameters;
-       max_MCG_admit_E_RAB_Level_QoS_Parameters_t      max_MCG_admit_E_RAB_Level_QoS_Parameters;
-       dL_Forwarding_t dL_Forwarding;
-       meNB_DL_GTP_TEIDatMCG_t meNB_DL_GTP_TEIDatMCG;
-       s1_UL_GTPtunnelEndpoint_t       s1_UL_GTPtunnelEndpoint;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       { ID id-uLpDCPSnLength                                                  CRITICALITY ignore      EXTENSION PDCPSnLength                                  PRESENCE optional}|
-       { ID id-dLPDCPSnLength                                                  CRITICALITY ignore      EXTENSION PDCPSnLength                                  PRESENCE optional}|
-       { ID id-duplicationActivation                                   CRITICALITY ignore      EXTENSION DuplicationActivation PRESENCE optional},
-       ...
-}
-*/
-
-struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_uLpDCPSnLength() { set(id_uLpDCPSnLength); type=1;}
-               void select_id_dLPDCPSnLength() { set(id_dLPDCPSnLength); type=2;}
-               void select_id_duplicationActivation() { set(id_duplicationActivation); type=3;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_uLpDCPSnLength)) { type = 1; return true; }
-                       else if(equal(id_dLPDCPSnLength)) { type = 2; return true; }
-                       else if(equal(id_duplicationActivation)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_uLpDCPSnLength);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_dLPDCPSnLength);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_duplicationActivation);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_uLpDCPSnLength() { set(ignore); type=1;}
-               void select_id_dLPDCPSnLength() { set(ignore); type=2;}
-               void select_id_duplicationActivation() { set(ignore); type=3;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               PDCPSnLength& select_id_uLpDCPSnLength() { return set<PDCPSnLength>(1); }
-               PDCPSnLength const* get_id_uLpDCPSnLength() const { return get<PDCPSnLength>(1); }
-               PDCPSnLength& select_id_dLPDCPSnLength() { return set<PDCPSnLength>(2); }
-               PDCPSnLength const* get_id_dLPDCPSnLength() const { return get<PDCPSnLength>(2); }
-               DuplicationActivation& select_id_duplicationActivation() { return set<DuplicationActivation>(3); }
-               DuplicationActivation const* get_id_duplicationActivation() const { return get<DuplicationActivation>(3); }
-               bool is_unknown() const { return type == 4; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<PDCPSnLength>(); break;
-                       case 2: var.destroy<PDCPSnLength>(); break;
-                       case 3: var.destroy<DuplicationActivation>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<PDCPSnLength>(1);
-                       v.template operator()<PDCPSnLength>(2);
-                       v.template operator()<DuplicationActivation>(3);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_uLpDCPSnLength()); return true;
-                       case 2: v(select_id_dLPDCPSnLength()); return true;
-                       case 3: v(select_id_duplicationActivation()); return true;
-                       case 4: if(type != 4) {clear(); asn::base::set();} type = 4; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<PDCPSnLength>()); return true;
-                       case 2: v(var.as<PDCPSnLength>()); return true;
-                       case 3: v(var.as<DuplicationActivation>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(DuplicationActivation)];
-                       char dummy2[sizeof(PDCPSnLength)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_uLpDCPSnLength() { set(optional); type=1;}
-               void select_id_dLPDCPSnLength() { set(optional); type=2;}
-               void select_id_duplicationActivation() { set(optional); type=3;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(optional)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else if(equal(optional)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresent ::= SEQUENCE {
-       requested-SCG-E-RAB-Level-QoS-Parameters                E-RAB-Level-QoS-Parameters,
-       meNB-UL-GTP-TEIDatPDCP                                                  GTPtunnelEndpoint,
-       secondary-meNB-UL-GTP-TEIDatPDCP                                GTPtunnelEndpoint       OPTIONAL,
-       rlc-Mode                                                                                RLCMode,
-       uL-Configuration                                                                ULConfiguration OPTIONAL,
--- This IE shall be present if MCG resource and SCG resources IEs in the the EN-DC Resource Configuration IE are set to “present” --
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresentExtIEs} }               OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent : asn::sequence<6, 0, true, 3>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresent";}
-       using parent_t = asn::sequence<6, 0, true, 3>;
-       struct requested_SCG_E_RAB_Level_QoS_Parameters_t : E_RAB_Level_QoS_Parameters
-       {
-               static constexpr const char* name() {return "requested_SCG_E_RAB_Level_QoS_Parameters_t";}
-               using parent_t = E_RAB_Level_QoS_Parameters;
-
-       };
-       requested_SCG_E_RAB_Level_QoS_Parameters_t& ref_requested_SCG_E_RAB_Level_QoS_Parameters() {return requested_SCG_E_RAB_Level_QoS_Parameters;}
-       requested_SCG_E_RAB_Level_QoS_Parameters_t const& ref_requested_SCG_E_RAB_Level_QoS_Parameters() const {return requested_SCG_E_RAB_Level_QoS_Parameters;}
-       struct meNB_UL_GTP_TEIDatPDCP_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "meNB_UL_GTP_TEIDatPDCP_t";}
-               using parent_t = GTPtunnelEndpoint;
-
-       };
-       meNB_UL_GTP_TEIDatPDCP_t& ref_meNB_UL_GTP_TEIDatPDCP() {return meNB_UL_GTP_TEIDatPDCP;}
-       meNB_UL_GTP_TEIDatPDCP_t const& ref_meNB_UL_GTP_TEIDatPDCP() const {return meNB_UL_GTP_TEIDatPDCP;}
-       struct secondary_meNB_UL_GTP_TEIDatPDCP_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "secondary_meNB_UL_GTP_TEIDatPDCP_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       secondary_meNB_UL_GTP_TEIDatPDCP_t& set_secondary_meNB_UL_GTP_TEIDatPDCP() { secondary_meNB_UL_GTP_TEIDatPDCP.setpresent(true); return secondary_meNB_UL_GTP_TEIDatPDCP;}
-       secondary_meNB_UL_GTP_TEIDatPDCP_t const* get_secondary_meNB_UL_GTP_TEIDatPDCP() const {return secondary_meNB_UL_GTP_TEIDatPDCP.is_valid() ? &secondary_meNB_UL_GTP_TEIDatPDCP : nullptr;}
-       struct rlc_Mode_t : RLCMode
-       {
-               static constexpr const char* name() {return "rlc_Mode_t";}
-               using parent_t = RLCMode;
-
-       };
-       rlc_Mode_t& ref_rlc_Mode() {return rlc_Mode;}
-       rlc_Mode_t const& ref_rlc_Mode() const {return rlc_Mode;}
-       struct uL_Configuration_t : ULConfiguration
-       {
-               static constexpr const char* name() {return "uL_Configuration_t";}
-               using parent_t = ULConfiguration;
-               static constexpr bool optional = true;
-
-       };
-       uL_Configuration_t& set_uL_Configuration() { uL_Configuration.setpresent(true); return uL_Configuration;}
-       uL_Configuration_t const* get_uL_Configuration() const {return uL_Configuration.is_valid() ? &uL_Configuration : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresentExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(requested_SCG_E_RAB_Level_QoS_Parameters);
-               v(meNB_UL_GTP_TEIDatPDCP);
-               v(secondary_meNB_UL_GTP_TEIDatPDCP);
-               v(rlc_Mode);
-               v(uL_Configuration);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(requested_SCG_E_RAB_Level_QoS_Parameters);
-               v(meNB_UL_GTP_TEIDatPDCP);
-               v(secondary_meNB_UL_GTP_TEIDatPDCP);
-               v(rlc_Mode);
-               v(uL_Configuration);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               requested_SCG_E_RAB_Level_QoS_Parameters.clear();
-               meNB_UL_GTP_TEIDatPDCP.clear();
-               secondary_meNB_UL_GTP_TEIDatPDCP.clear();
-               rlc_Mode.clear();
-               uL_Configuration.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       requested_SCG_E_RAB_Level_QoS_Parameters_t      requested_SCG_E_RAB_Level_QoS_Parameters;
-       meNB_UL_GTP_TEIDatPDCP_t        meNB_UL_GTP_TEIDatPDCP;
-       secondary_meNB_UL_GTP_TEIDatPDCP_t      secondary_meNB_UL_GTP_TEIDatPDCP;
-       rlc_Mode_t      rlc_Mode;
-       uL_Configuration_t      uL_Configuration;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeAdded-SgNBAddReq-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeAdded-SgNBAddReq-Item ::= SEQUENCE {
-       e-RAB-ID                                                                E-RAB-ID,
-       drb-ID                                                          DRB-ID,
-       en-DC-ResourceConfiguration                     EN-DC-ResourceConfiguration,
-       resource-configuration                          CHOICE {
-               sgNBPDCPpresent                                         E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPpresent,
-               sgNBPDCPnotpresent                                      E-RABs-ToBeAdded-SgNBAddReq-Item-SgNBPDCPnotpresent,
-               ...
-       },
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeAdded-SgNBAddReq-ItemExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeAdded_SgNBAddReq_Item : asn::sequence<5, 0, true, 1>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeAdded-SgNBAddReq-Item";}
-       using parent_t = asn::sequence<5, 0, true, 1>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct drb_ID_t : DRB_ID
-       {
-               static constexpr const char* name() {return "drb_ID_t";}
-               using parent_t = DRB_ID;
-
-       };
-       drb_ID_t& ref_drb_ID() {return drb_ID;}
-       drb_ID_t const& ref_drb_ID() const {return drb_ID;}
-       struct en_DC_ResourceConfiguration_t : EN_DC_ResourceConfiguration
-       {
-               static constexpr const char* name() {return "en_DC_ResourceConfiguration_t";}
-               using parent_t = EN_DC_ResourceConfiguration;
-
-       };
-       en_DC_ResourceConfiguration_t& ref_en_DC_ResourceConfiguration() {return en_DC_ResourceConfiguration;}
-       en_DC_ResourceConfiguration_t const& ref_en_DC_ResourceConfiguration() const {return en_DC_ResourceConfiguration;}
-       struct resource_configuration_t : asn::choice<2, 0, true>
-       {
-               static constexpr const char* name() {return "resource_configuration_t";}
-               using parent_t = asn::choice<2, 0, true>;
-               index_type get_index() const {return index;}
-               bool is_unknown() const {return index == 3;}
-               void set_unknown() { set_index(3);  }
-               ~resource_configuration_t() {clear();}
-               struct sgNBPDCPpresent_t : E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent
-               {
-                       static constexpr const char* name() {return "sgNBPDCPpresent_t";}
-                       using parent_t = E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPpresent;
-
-               };
-               struct sgNBPDCPnotpresent_t : E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent
-               {
-                       static constexpr const char* name() {return "sgNBPDCPnotpresent_t";}
-                       using parent_t = E_RABs_ToBeAdded_SgNBAddReq_Item_SgNBPDCPnotpresent;
-
-               };
-               void clear()
-               {
-                       switch(get_index())
-                       {
-                       case 1: var.destroy<sgNBPDCPpresent_t>(); break;
-                       case 2: var.destroy<sgNBPDCPnotpresent_t>(); break;
-                       }
-                       index = 0;
-                       base::clear();
-               }
-               template<typename V> bool decode(size_t idx, V& v)
-               {
-                       clear();
-                       switch(idx)
-                       {
-                       case 1: set_index(1); return v(var.build<sgNBPDCPpresent_t>());
-                       case 2: set_index(2); return v(var.build<sgNBPDCPnotpresent_t>());
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       switch(get_index())
-                       {
-                       case 1: return v(var.as<sgNBPDCPpresent_t>());
-                       case 2: return v(var.as<sgNBPDCPnotpresent_t>());
-                       }
-                       return false;
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<sgNBPDCPpresent_t>(1);
-                       v.template operator()<sgNBPDCPnotpresent_t>(2);
-
-               }
-               sgNBPDCPpresent_t& select_sgNBPDCPpresent() { if(get_index() != 1) { clear(); set_index(1); return var.build<sgNBPDCPpresent_t>();} return var.as<sgNBPDCPpresent_t>();}
-               sgNBPDCPpresent_t const* get_sgNBPDCPpresent() const { if(get_index() == 1) { return &var.as<sgNBPDCPpresent_t>();} return nullptr; }
-               sgNBPDCPnotpresent_t& select_sgNBPDCPnotpresent() { if(get_index() != 2) { clear(); set_index(2); return var.build<sgNBPDCPnotpresent_t>();} return var.as<sgNBPDCPnotpresent_t>();}
-               sgNBPDCPnotpresent_t const* get_sgNBPDCPnotpresent() const { if(get_index() == 2) { return &var.as<sgNBPDCPnotpresent_t>();} return nullptr; }
-               private:
-               void set_index(index_type i) {index = i; base::set();}
-               union union_type
-               {
-                       char dummy1[sizeof(sgNBPDCPpresent_t)];
-                       char dummy2[sizeof(sgNBPDCPnotpresent_t)];
-
-               };
-               asn::variant<sizeof(union_type)>        var;
-               index_type      index {0};
-       };
-       resource_configuration_t& ref_resource_configuration() {return resource_configuration;}
-       resource_configuration_t const& ref_resource_configuration() const {return resource_configuration;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeAdded_SgNBAddReq_ItemExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(drb_ID);
-               v(en_DC_ResourceConfiguration);
-               v(resource_configuration);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(drb_ID);
-               v(en_DC_ResourceConfiguration);
-               v(resource_configuration);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               drb_ID.clear();
-               en_DC_ResourceConfiguration.clear();
-               resource_configuration.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       drb_ID_t        drb_ID;
-       en_DC_ResourceConfiguration_t   en_DC_ResourceConfiguration;
-       resource_configuration_t        resource_configuration;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeAdded-SgNBAddReq-ItemIEs    X2AP-PROTOCOL-IES ::= {
-       { ID id-E-RABs-ToBeAdded-SgNBAddReq-Item                CRITICALITY reject      TYPE E-RABs-ToBeAdded-SgNBAddReq-Item           PRESENCE mandatory},
-       ...
-}
-*/
-
-struct E_RABs_ToBeAdded_SgNBAddReq_ItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeAdded_SgNBAddReq_Item() { set(id_E_RABs_ToBeAdded_SgNBAddReq_Item); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_E_RABs_ToBeAdded_SgNBAddReq_Item)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_E_RABs_ToBeAdded_SgNBAddReq_Item);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeAdded_SgNBAddReq_Item() { set(reject); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               E_RABs_ToBeAdded_SgNBAddReq_Item& select_id_E_RABs_ToBeAdded_SgNBAddReq_Item() { return set<E_RABs_ToBeAdded_SgNBAddReq_Item>(1); }
-               E_RABs_ToBeAdded_SgNBAddReq_Item const* get_id_E_RABs_ToBeAdded_SgNBAddReq_Item() const { return get<E_RABs_ToBeAdded_SgNBAddReq_Item>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<E_RABs_ToBeAdded_SgNBAddReq_Item>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<E_RABs_ToBeAdded_SgNBAddReq_Item>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_E_RABs_ToBeAdded_SgNBAddReq_Item()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<E_RABs_ToBeAdded_SgNBAddReq_Item>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(E_RABs_ToBeAdded_SgNBAddReq_Item)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeAdded_SgNBAddReq_Item() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeAdded-SgNBAddReqList ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeAdded-SgNBAddReq-ItemIEs} }
-*/
-
-struct E_RABs_ToBeAdded_SgNBAddReqList_elm : ProtocolIE_Single_Container<E_RABs_ToBeAdded_SgNBAddReq_ItemIEs>
-{
-       static constexpr const char* name() {return "E_RABs_ToBeAdded_SgNBAddReqList_elm";}
-       using parent_t = ProtocolIE_Single_Container<E_RABs_ToBeAdded_SgNBAddReq_ItemIEs>;
-
-};
-struct E_RABs_ToBeAdded_SgNBAddReqList : asn::sequenceof<E_RABs_ToBeAdded_SgNBAddReqList_elm>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeAdded-SgNBAddReqList";}
-       using parent_t = asn::sequenceof<E_RABs_ToBeAdded_SgNBAddReqList_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxnoofBearers >>;
-
-};
-/*
-E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       { ID id-RLCMode-transferred                                     CRITICALITY ignore      EXTENSION RLCMode                                       PRESENCE optional},
-       ...
-}
-*/
-
-struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_RLCMode_transferred() { set(id_RLCMode_transferred); type=1;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_RLCMode_transferred)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_RLCMode_transferred);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_RLCMode_transferred() { set(ignore); type=1;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               RLCMode& select_id_RLCMode_transferred() { return set<RLCMode>(1); }
-               RLCMode const* get_id_RLCMode_transferred() const { return get<RLCMode>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<RLCMode>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<RLCMode>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_RLCMode_transferred()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<RLCMode>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(RLCMode)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_RLCMode_transferred() { set(optional); type=1;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(optional)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresent ::= SEQUENCE {
-       full-E-RAB-Level-QoS-Parameters                 E-RAB-Level-QoS-Parameters,
-       max-MN-admit-E-RAB-Level-QoS-Parameters GBR-QosInformation                                                                                                                      OPTIONAL,
--- This IE shall be present if MCG resource and SCG resources IEs in the the EN-DC Resource Configuration IE are set to “present” and GBR QoS Information IE is present in Full E-RAB Level QoS Parameters IE --
-       dL-Forwarding                                                   DL-Forwarding                                                                                                                                           OPTIONAL,
-       meNB-DL-GTP-TEIDatMCG                                   GTPtunnelEndpoint                                                                                                                                       OPTIONAL,
--- This IE shall be present if MCG resource IE in the the EN-DC Resource Configuration IE is set to “present” --
-       s1-UL-GTPtunnelEndpoint                                 GTPtunnelEndpoint,
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresentExtIEs} }         OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent : asn::sequence<6, 0, true, 4>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresent";}
-       using parent_t = asn::sequence<6, 0, true, 4>;
-       struct full_E_RAB_Level_QoS_Parameters_t : E_RAB_Level_QoS_Parameters
-       {
-               static constexpr const char* name() {return "full_E_RAB_Level_QoS_Parameters_t";}
-               using parent_t = E_RAB_Level_QoS_Parameters;
-
-       };
-       full_E_RAB_Level_QoS_Parameters_t& ref_full_E_RAB_Level_QoS_Parameters() {return full_E_RAB_Level_QoS_Parameters;}
-       full_E_RAB_Level_QoS_Parameters_t const& ref_full_E_RAB_Level_QoS_Parameters() const {return full_E_RAB_Level_QoS_Parameters;}
-       struct max_MN_admit_E_RAB_Level_QoS_Parameters_t : GBR_QosInformation
-       {
-               static constexpr const char* name() {return "max_MN_admit_E_RAB_Level_QoS_Parameters_t";}
-               using parent_t = GBR_QosInformation;
-               static constexpr bool optional = true;
-
-       };
-       max_MN_admit_E_RAB_Level_QoS_Parameters_t& set_max_MN_admit_E_RAB_Level_QoS_Parameters() { max_MN_admit_E_RAB_Level_QoS_Parameters.setpresent(true); return max_MN_admit_E_RAB_Level_QoS_Parameters;}
-       max_MN_admit_E_RAB_Level_QoS_Parameters_t const* get_max_MN_admit_E_RAB_Level_QoS_Parameters() const {return max_MN_admit_E_RAB_Level_QoS_Parameters.is_valid() ? &max_MN_admit_E_RAB_Level_QoS_Parameters : nullptr;}
-       struct dL_Forwarding_t : DL_Forwarding
-       {
-               static constexpr const char* name() {return "dL_Forwarding_t";}
-               using parent_t = DL_Forwarding;
-               static constexpr bool optional = true;
-
-       };
-       dL_Forwarding_t& set_dL_Forwarding() { dL_Forwarding.setpresent(true); return dL_Forwarding;}
-       dL_Forwarding_t const* get_dL_Forwarding() const {return dL_Forwarding.is_valid() ? &dL_Forwarding : nullptr;}
-       struct meNB_DL_GTP_TEIDatMCG_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "meNB_DL_GTP_TEIDatMCG_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       meNB_DL_GTP_TEIDatMCG_t& set_meNB_DL_GTP_TEIDatMCG() { meNB_DL_GTP_TEIDatMCG.setpresent(true); return meNB_DL_GTP_TEIDatMCG;}
-       meNB_DL_GTP_TEIDatMCG_t const* get_meNB_DL_GTP_TEIDatMCG() const {return meNB_DL_GTP_TEIDatMCG.is_valid() ? &meNB_DL_GTP_TEIDatMCG : nullptr;}
-       struct s1_UL_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "s1_UL_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-
-       };
-       s1_UL_GTPtunnelEndpoint_t& ref_s1_UL_GTPtunnelEndpoint() {return s1_UL_GTPtunnelEndpoint;}
-       s1_UL_GTPtunnelEndpoint_t const& ref_s1_UL_GTPtunnelEndpoint() const {return s1_UL_GTPtunnelEndpoint;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresentExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(full_E_RAB_Level_QoS_Parameters);
-               v(max_MN_admit_E_RAB_Level_QoS_Parameters);
-               v(dL_Forwarding);
-               v(meNB_DL_GTP_TEIDatMCG);
-               v(s1_UL_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(full_E_RAB_Level_QoS_Parameters);
-               v(max_MN_admit_E_RAB_Level_QoS_Parameters);
-               v(dL_Forwarding);
-               v(meNB_DL_GTP_TEIDatMCG);
-               v(s1_UL_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               full_E_RAB_Level_QoS_Parameters.clear();
-               max_MN_admit_E_RAB_Level_QoS_Parameters.clear();
-               dL_Forwarding.clear();
-               meNB_DL_GTP_TEIDatMCG.clear();
-               s1_UL_GTPtunnelEndpoint.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       full_E_RAB_Level_QoS_Parameters_t       full_E_RAB_Level_QoS_Parameters;
-       max_MN_admit_E_RAB_Level_QoS_Parameters_t       max_MN_admit_E_RAB_Level_QoS_Parameters;
-       dL_Forwarding_t dL_Forwarding;
-       meNB_DL_GTP_TEIDatMCG_t meNB_DL_GTP_TEIDatMCG;
-       s1_UL_GTPtunnelEndpoint_t       s1_UL_GTPtunnelEndpoint;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       { ID id-uLpDCPSnLength                                                  CRITICALITY ignore      EXTENSION PDCPSnLength                                  PRESENCE optional}|
-       { ID id-dLPDCPSnLength                                                  CRITICALITY ignore      EXTENSION PDCPSnLength                                  PRESENCE optional}|
-       { ID id-duplicationActivation                                   CRITICALITY ignore      EXTENSION DuplicationActivation PRESENCE optional},
-       ...
-}
-*/
-
-struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_uLpDCPSnLength() { set(id_uLpDCPSnLength); type=1;}
-               void select_id_dLPDCPSnLength() { set(id_dLPDCPSnLength); type=2;}
-               void select_id_duplicationActivation() { set(id_duplicationActivation); type=3;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_uLpDCPSnLength)) { type = 1; return true; }
-                       else if(equal(id_dLPDCPSnLength)) { type = 2; return true; }
-                       else if(equal(id_duplicationActivation)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_uLpDCPSnLength);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_dLPDCPSnLength);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_duplicationActivation);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_uLpDCPSnLength() { set(ignore); type=1;}
-               void select_id_dLPDCPSnLength() { set(ignore); type=2;}
-               void select_id_duplicationActivation() { set(ignore); type=3;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               PDCPSnLength& select_id_uLpDCPSnLength() { return set<PDCPSnLength>(1); }
-               PDCPSnLength const* get_id_uLpDCPSnLength() const { return get<PDCPSnLength>(1); }
-               PDCPSnLength& select_id_dLPDCPSnLength() { return set<PDCPSnLength>(2); }
-               PDCPSnLength const* get_id_dLPDCPSnLength() const { return get<PDCPSnLength>(2); }
-               DuplicationActivation& select_id_duplicationActivation() { return set<DuplicationActivation>(3); }
-               DuplicationActivation const* get_id_duplicationActivation() const { return get<DuplicationActivation>(3); }
-               bool is_unknown() const { return type == 4; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<PDCPSnLength>(); break;
-                       case 2: var.destroy<PDCPSnLength>(); break;
-                       case 3: var.destroy<DuplicationActivation>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<PDCPSnLength>(1);
-                       v.template operator()<PDCPSnLength>(2);
-                       v.template operator()<DuplicationActivation>(3);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_uLpDCPSnLength()); return true;
-                       case 2: v(select_id_dLPDCPSnLength()); return true;
-                       case 3: v(select_id_duplicationActivation()); return true;
-                       case 4: if(type != 4) {clear(); asn::base::set();} type = 4; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<PDCPSnLength>()); return true;
-                       case 2: v(var.as<PDCPSnLength>()); return true;
-                       case 3: v(var.as<DuplicationActivation>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(DuplicationActivation)];
-                       char dummy2[sizeof(PDCPSnLength)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_uLpDCPSnLength() { set(optional); type=1;}
-               void select_id_dLPDCPSnLength() { set(optional); type=2;}
-               void select_id_duplicationActivation() { set(optional); type=3;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(optional)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else if(equal(optional)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresent ::= SEQUENCE {
-       requested-SCG-E-RAB-Level-QoS-Parameters                E-RAB-Level-QoS-Parameters,
-       meNB-UL-GTP-TEIDatPDCP                                                  GTPtunnelEndpoint,
-       secondary-meNB-UL-GTP-TEIDatPDCP                                GTPtunnelEndpoint               OPTIONAL,
-       rlc-Mode                                                                                RLCMode,
-       uL-Configuration                                                                ULConfiguration                                                                                                                         OPTIONAL,
--- This IE shall be present if MCG resource and SCG resources IEs in the the EN-DC Resource Configuration IE are set to “present” --
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresentExtIEs} }              OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent : asn::sequence<6, 0, true, 3>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresent";}
-       using parent_t = asn::sequence<6, 0, true, 3>;
-       struct requested_SCG_E_RAB_Level_QoS_Parameters_t : E_RAB_Level_QoS_Parameters
-       {
-               static constexpr const char* name() {return "requested_SCG_E_RAB_Level_QoS_Parameters_t";}
-               using parent_t = E_RAB_Level_QoS_Parameters;
-
-       };
-       requested_SCG_E_RAB_Level_QoS_Parameters_t& ref_requested_SCG_E_RAB_Level_QoS_Parameters() {return requested_SCG_E_RAB_Level_QoS_Parameters;}
-       requested_SCG_E_RAB_Level_QoS_Parameters_t const& ref_requested_SCG_E_RAB_Level_QoS_Parameters() const {return requested_SCG_E_RAB_Level_QoS_Parameters;}
-       struct meNB_UL_GTP_TEIDatPDCP_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "meNB_UL_GTP_TEIDatPDCP_t";}
-               using parent_t = GTPtunnelEndpoint;
-
-       };
-       meNB_UL_GTP_TEIDatPDCP_t& ref_meNB_UL_GTP_TEIDatPDCP() {return meNB_UL_GTP_TEIDatPDCP;}
-       meNB_UL_GTP_TEIDatPDCP_t const& ref_meNB_UL_GTP_TEIDatPDCP() const {return meNB_UL_GTP_TEIDatPDCP;}
-       struct secondary_meNB_UL_GTP_TEIDatPDCP_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "secondary_meNB_UL_GTP_TEIDatPDCP_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       secondary_meNB_UL_GTP_TEIDatPDCP_t& set_secondary_meNB_UL_GTP_TEIDatPDCP() { secondary_meNB_UL_GTP_TEIDatPDCP.setpresent(true); return secondary_meNB_UL_GTP_TEIDatPDCP;}
-       secondary_meNB_UL_GTP_TEIDatPDCP_t const* get_secondary_meNB_UL_GTP_TEIDatPDCP() const {return secondary_meNB_UL_GTP_TEIDatPDCP.is_valid() ? &secondary_meNB_UL_GTP_TEIDatPDCP : nullptr;}
-       struct rlc_Mode_t : RLCMode
-       {
-               static constexpr const char* name() {return "rlc_Mode_t";}
-               using parent_t = RLCMode;
-
-       };
-       rlc_Mode_t& ref_rlc_Mode() {return rlc_Mode;}
-       rlc_Mode_t const& ref_rlc_Mode() const {return rlc_Mode;}
-       struct uL_Configuration_t : ULConfiguration
-       {
-               static constexpr const char* name() {return "uL_Configuration_t";}
-               using parent_t = ULConfiguration;
-               static constexpr bool optional = true;
-
-       };
-       uL_Configuration_t& set_uL_Configuration() { uL_Configuration.setpresent(true); return uL_Configuration;}
-       uL_Configuration_t const* get_uL_Configuration() const {return uL_Configuration.is_valid() ? &uL_Configuration : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(requested_SCG_E_RAB_Level_QoS_Parameters);
-               v(meNB_UL_GTP_TEIDatPDCP);
-               v(secondary_meNB_UL_GTP_TEIDatPDCP);
-               v(rlc_Mode);
-               v(uL_Configuration);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(requested_SCG_E_RAB_Level_QoS_Parameters);
-               v(meNB_UL_GTP_TEIDatPDCP);
-               v(secondary_meNB_UL_GTP_TEIDatPDCP);
-               v(rlc_Mode);
-               v(uL_Configuration);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               requested_SCG_E_RAB_Level_QoS_Parameters.clear();
-               meNB_UL_GTP_TEIDatPDCP.clear();
-               secondary_meNB_UL_GTP_TEIDatPDCP.clear();
-               rlc_Mode.clear();
-               uL_Configuration.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       requested_SCG_E_RAB_Level_QoS_Parameters_t      requested_SCG_E_RAB_Level_QoS_Parameters;
-       meNB_UL_GTP_TEIDatPDCP_t        meNB_UL_GTP_TEIDatPDCP;
-       secondary_meNB_UL_GTP_TEIDatPDCP_t      secondary_meNB_UL_GTP_TEIDatPDCP;
-       rlc_Mode_t      rlc_Mode;
-       uL_Configuration_t      uL_Configuration;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeAdded-SgNBModReq-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeAdded-SgNBModReq-Item ::= SEQUENCE {
-       e-RAB-ID                                                                E-RAB-ID,
-       drb-ID                                                                  DRB-ID,
-       en-DC-ResourceConfiguration                             EN-DC-ResourceConfiguration,
-       resource-configuration                                  CHOICE {
-               sgNBPDCPpresent                                         E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPpresent,
-               sgNBPDCPnotpresent                                      E-RABs-ToBeAdded-SgNBModReq-Item-SgNBPDCPnotpresent,
-               ...
-       },
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeAdded-SgNBModReq-ItemExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeAdded_SgNBModReq_Item : asn::sequence<5, 0, true, 1>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeAdded-SgNBModReq-Item";}
-       using parent_t = asn::sequence<5, 0, true, 1>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct drb_ID_t : DRB_ID
-       {
-               static constexpr const char* name() {return "drb_ID_t";}
-               using parent_t = DRB_ID;
-
-       };
-       drb_ID_t& ref_drb_ID() {return drb_ID;}
-       drb_ID_t const& ref_drb_ID() const {return drb_ID;}
-       struct en_DC_ResourceConfiguration_t : EN_DC_ResourceConfiguration
-       {
-               static constexpr const char* name() {return "en_DC_ResourceConfiguration_t";}
-               using parent_t = EN_DC_ResourceConfiguration;
-
-       };
-       en_DC_ResourceConfiguration_t& ref_en_DC_ResourceConfiguration() {return en_DC_ResourceConfiguration;}
-       en_DC_ResourceConfiguration_t const& ref_en_DC_ResourceConfiguration() const {return en_DC_ResourceConfiguration;}
-       struct resource_configuration_t : asn::choice<2, 0, true>
-       {
-               static constexpr const char* name() {return "resource_configuration_t";}
-               using parent_t = asn::choice<2, 0, true>;
-               index_type get_index() const {return index;}
-               bool is_unknown() const {return index == 3;}
-               void set_unknown() { set_index(3);  }
-               ~resource_configuration_t() {clear();}
-               struct sgNBPDCPpresent_t : E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent
-               {
-                       static constexpr const char* name() {return "sgNBPDCPpresent_t";}
-                       using parent_t = E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPpresent;
-
-               };
-               struct sgNBPDCPnotpresent_t : E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent
-               {
-                       static constexpr const char* name() {return "sgNBPDCPnotpresent_t";}
-                       using parent_t = E_RABs_ToBeAdded_SgNBModReq_Item_SgNBPDCPnotpresent;
-
-               };
-               void clear()
-               {
-                       switch(get_index())
-                       {
-                       case 1: var.destroy<sgNBPDCPpresent_t>(); break;
-                       case 2: var.destroy<sgNBPDCPnotpresent_t>(); break;
-                       }
-                       index = 0;
-                       base::clear();
-               }
-               template<typename V> bool decode(size_t idx, V& v)
-               {
-                       clear();
-                       switch(idx)
-                       {
-                       case 1: set_index(1); return v(var.build<sgNBPDCPpresent_t>());
-                       case 2: set_index(2); return v(var.build<sgNBPDCPnotpresent_t>());
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       switch(get_index())
-                       {
-                       case 1: return v(var.as<sgNBPDCPpresent_t>());
-                       case 2: return v(var.as<sgNBPDCPnotpresent_t>());
-                       }
-                       return false;
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<sgNBPDCPpresent_t>(1);
-                       v.template operator()<sgNBPDCPnotpresent_t>(2);
-
-               }
-               sgNBPDCPpresent_t& select_sgNBPDCPpresent() { if(get_index() != 1) { clear(); set_index(1); return var.build<sgNBPDCPpresent_t>();} return var.as<sgNBPDCPpresent_t>();}
-               sgNBPDCPpresent_t const* get_sgNBPDCPpresent() const { if(get_index() == 1) { return &var.as<sgNBPDCPpresent_t>();} return nullptr; }
-               sgNBPDCPnotpresent_t& select_sgNBPDCPnotpresent() { if(get_index() != 2) { clear(); set_index(2); return var.build<sgNBPDCPnotpresent_t>();} return var.as<sgNBPDCPnotpresent_t>();}
-               sgNBPDCPnotpresent_t const* get_sgNBPDCPnotpresent() const { if(get_index() == 2) { return &var.as<sgNBPDCPnotpresent_t>();} return nullptr; }
-               private:
-               void set_index(index_type i) {index = i; base::set();}
-               union union_type
-               {
-                       char dummy1[sizeof(sgNBPDCPpresent_t)];
-                       char dummy2[sizeof(sgNBPDCPnotpresent_t)];
-
-               };
-               asn::variant<sizeof(union_type)>        var;
-               index_type      index {0};
-       };
-       resource_configuration_t& ref_resource_configuration() {return resource_configuration;}
-       resource_configuration_t const& ref_resource_configuration() const {return resource_configuration;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeAdded_SgNBModReq_ItemExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(drb_ID);
-               v(en_DC_ResourceConfiguration);
-               v(resource_configuration);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(drb_ID);
-               v(en_DC_ResourceConfiguration);
-               v(resource_configuration);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               drb_ID.clear();
-               en_DC_ResourceConfiguration.clear();
-               resource_configuration.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       drb_ID_t        drb_ID;
-       en_DC_ResourceConfiguration_t   en_DC_ResourceConfiguration;
-       resource_configuration_t        resource_configuration;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeAdded-SgNBModReq-ItemIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-E-RABs-ToBeAdded-SgNBModReq-Item                CRITICALITY ignore      TYPE E-RABs-ToBeAdded-SgNBModReq-Item           PRESENCE mandatory},
-       ...
-}
-*/
-
-struct E_RABs_ToBeAdded_SgNBModReq_ItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeAdded_SgNBModReq_Item() { set(id_E_RABs_ToBeAdded_SgNBModReq_Item); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_E_RABs_ToBeAdded_SgNBModReq_Item)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_E_RABs_ToBeAdded_SgNBModReq_Item);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeAdded_SgNBModReq_Item() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               E_RABs_ToBeAdded_SgNBModReq_Item& select_id_E_RABs_ToBeAdded_SgNBModReq_Item() { return set<E_RABs_ToBeAdded_SgNBModReq_Item>(1); }
-               E_RABs_ToBeAdded_SgNBModReq_Item const* get_id_E_RABs_ToBeAdded_SgNBModReq_Item() const { return get<E_RABs_ToBeAdded_SgNBModReq_Item>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<E_RABs_ToBeAdded_SgNBModReq_Item>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<E_RABs_ToBeAdded_SgNBModReq_Item>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_E_RABs_ToBeAdded_SgNBModReq_Item()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<E_RABs_ToBeAdded_SgNBModReq_Item>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(E_RABs_ToBeAdded_SgNBModReq_Item)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeAdded_SgNBModReq_Item() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeAdded-SgNBModReq-List ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeAdded-SgNBModReq-ItemIEs} }
-*/
-
-struct E_RABs_ToBeAdded_SgNBModReq_List_elm : ProtocolIE_Single_Container<E_RABs_ToBeAdded_SgNBModReq_ItemIEs>
-{
-       static constexpr const char* name() {return "E_RABs_ToBeAdded_SgNBModReq_List_elm";}
-       using parent_t = ProtocolIE_Single_Container<E_RABs_ToBeAdded_SgNBModReq_ItemIEs>;
-
-};
-struct E_RABs_ToBeAdded_SgNBModReq_List : asn::sequenceof<E_RABs_ToBeAdded_SgNBModReq_List_elm>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeAdded-SgNBModReq-List";}
-       using parent_t = asn::sequenceof<E_RABs_ToBeAdded_SgNBModReq_List_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxnoofBearers >>;
-
-};
-/*
-E-RABs-ToBeModified-ModReqItem-SCG-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeModified-ModReqItem-SCG-Bearer ::= SEQUENCE {
-       e-RAB-ID                                                E-RAB-ID,
-       e-RAB-Level-QoS-Parameters              E-RAB-Level-QoS-Parameters                                                                                                              OPTIONAL,
-       s1-UL-GTPtunnelEndpoint                 GTPtunnelEndpoint                                                                                                                               OPTIONAL,
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeModified-ModReqItem-SCG-BearerExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeModified_ModReqItem_SCG_Bearer : asn::sequence<4, 0, true, 3>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeModified-ModReqItem-SCG-Bearer";}
-       using parent_t = asn::sequence<4, 0, true, 3>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct e_RAB_Level_QoS_Parameters_t : E_RAB_Level_QoS_Parameters
-       {
-               static constexpr const char* name() {return "e_RAB_Level_QoS_Parameters_t";}
-               using parent_t = E_RAB_Level_QoS_Parameters;
-               static constexpr bool optional = true;
-
-       };
-       e_RAB_Level_QoS_Parameters_t& set_e_RAB_Level_QoS_Parameters() { e_RAB_Level_QoS_Parameters.setpresent(true); return e_RAB_Level_QoS_Parameters;}
-       e_RAB_Level_QoS_Parameters_t const* get_e_RAB_Level_QoS_Parameters() const {return e_RAB_Level_QoS_Parameters.is_valid() ? &e_RAB_Level_QoS_Parameters : nullptr;}
-       struct s1_UL_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "s1_UL_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       s1_UL_GTPtunnelEndpoint_t& set_s1_UL_GTPtunnelEndpoint() { s1_UL_GTPtunnelEndpoint.setpresent(true); return s1_UL_GTPtunnelEndpoint;}
-       s1_UL_GTPtunnelEndpoint_t const* get_s1_UL_GTPtunnelEndpoint() const {return s1_UL_GTPtunnelEndpoint.is_valid() ? &s1_UL_GTPtunnelEndpoint : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeModified_ModReqItem_SCG_BearerExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(e_RAB_Level_QoS_Parameters);
-               v(s1_UL_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(e_RAB_Level_QoS_Parameters);
-               v(s1_UL_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               e_RAB_Level_QoS_Parameters.clear();
-               s1_UL_GTPtunnelEndpoint.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       e_RAB_Level_QoS_Parameters_t    e_RAB_Level_QoS_Parameters;
-       s1_UL_GTPtunnelEndpoint_t       s1_UL_GTPtunnelEndpoint;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeModified-ModReqItem-Split-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeModified-ModReqItem-Split-Bearer ::= SEQUENCE {
-       e-RAB-ID                                                E-RAB-ID,
-       e-RAB-Level-QoS-Parameters              E-RAB-Level-QoS-Parameters                                                                                                                              OPTIONAL,
-       meNB-GTPtunnelEndpoint                  GTPtunnelEndpoint                                                                                                                                               OPTIONAL,
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeModified-ModReqItem-Split-BearerExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeModified_ModReqItem_Split_Bearer : asn::sequence<4, 0, true, 3>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeModified-ModReqItem-Split-Bearer";}
-       using parent_t = asn::sequence<4, 0, true, 3>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct e_RAB_Level_QoS_Parameters_t : E_RAB_Level_QoS_Parameters
-       {
-               static constexpr const char* name() {return "e_RAB_Level_QoS_Parameters_t";}
-               using parent_t = E_RAB_Level_QoS_Parameters;
-               static constexpr bool optional = true;
-
-       };
-       e_RAB_Level_QoS_Parameters_t& set_e_RAB_Level_QoS_Parameters() { e_RAB_Level_QoS_Parameters.setpresent(true); return e_RAB_Level_QoS_Parameters;}
-       e_RAB_Level_QoS_Parameters_t const* get_e_RAB_Level_QoS_Parameters() const {return e_RAB_Level_QoS_Parameters.is_valid() ? &e_RAB_Level_QoS_Parameters : nullptr;}
-       struct meNB_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "meNB_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       meNB_GTPtunnelEndpoint_t& set_meNB_GTPtunnelEndpoint() { meNB_GTPtunnelEndpoint.setpresent(true); return meNB_GTPtunnelEndpoint;}
-       meNB_GTPtunnelEndpoint_t const* get_meNB_GTPtunnelEndpoint() const {return meNB_GTPtunnelEndpoint.is_valid() ? &meNB_GTPtunnelEndpoint : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeModified_ModReqItem_Split_BearerExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(e_RAB_Level_QoS_Parameters);
-               v(meNB_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(e_RAB_Level_QoS_Parameters);
-               v(meNB_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               e_RAB_Level_QoS_Parameters.clear();
-               meNB_GTPtunnelEndpoint.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       e_RAB_Level_QoS_Parameters_t    e_RAB_Level_QoS_Parameters;
-       meNB_GTPtunnelEndpoint_t        meNB_GTPtunnelEndpoint;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeModified-ModReqItem ::= CHOICE {
-       sCG-Bearer              E-RABs-ToBeModified-ModReqItem-SCG-Bearer,
-       split-Bearer    E-RABs-ToBeModified-ModReqItem-Split-Bearer,
-       ...
-}
-*/
-
-struct E_RABs_ToBeModified_ModReqItem : asn::choice<2, 0, true>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeModified-ModReqItem";}
-       using parent_t = asn::choice<2, 0, true>;
-       index_type get_index() const {return index;}
-       bool is_unknown() const {return index == 3;}
-       void set_unknown() { set_index(3);  }
-       ~E_RABs_ToBeModified_ModReqItem() {clear();}
-       struct sCG_Bearer_t : E_RABs_ToBeModified_ModReqItem_SCG_Bearer
-       {
-               static constexpr const char* name() {return "sCG_Bearer_t";}
-               using parent_t = E_RABs_ToBeModified_ModReqItem_SCG_Bearer;
-
-       };
-       struct split_Bearer_t : E_RABs_ToBeModified_ModReqItem_Split_Bearer
-       {
-               static constexpr const char* name() {return "split_Bearer_t";}
-               using parent_t = E_RABs_ToBeModified_ModReqItem_Split_Bearer;
-
-       };
-       void clear()
-       {
-               switch(get_index())
-               {
-               case 1: var.destroy<sCG_Bearer_t>(); break;
-               case 2: var.destroy<split_Bearer_t>(); break;
-               }
-               index = 0;
-               base::clear();
-       }
-       template<typename V> bool decode(size_t idx, V& v)
-       {
-               clear();
-               switch(idx)
-               {
-               case 1: set_index(1); return v(var.build<sCG_Bearer_t>());
-               case 2: set_index(2); return v(var.build<split_Bearer_t>());
-               }
-               return false;
-
-       }
-       template<typename V> bool encode(V& v) const
-       {
-               switch(get_index())
-               {
-               case 1: return v(var.as<sCG_Bearer_t>());
-               case 2: return v(var.as<split_Bearer_t>());
-               }
-               return false;
-       }
-       template<typename V> static inline void enumerate(V& v)
-       {
-               v.template operator()<sCG_Bearer_t>(1);
-               v.template operator()<split_Bearer_t>(2);
-
-       }
-       sCG_Bearer_t& select_sCG_Bearer() { if(get_index() != 1) { clear(); set_index(1); return var.build<sCG_Bearer_t>();} return var.as<sCG_Bearer_t>();}
-       sCG_Bearer_t const* get_sCG_Bearer() const { if(get_index() == 1) { return &var.as<sCG_Bearer_t>();} return nullptr; }
-       split_Bearer_t& select_split_Bearer() { if(get_index() != 2) { clear(); set_index(2); return var.build<split_Bearer_t>();} return var.as<split_Bearer_t>();}
-       split_Bearer_t const* get_split_Bearer() const { if(get_index() == 2) { return &var.as<split_Bearer_t>();} return nullptr; }
-       private:
-       void set_index(index_type i) {index = i; base::set();}
-       union union_type
-       {
-               char dummy1[sizeof(sCG_Bearer_t)];
-               char dummy2[sizeof(split_Bearer_t)];
-
-       };
-       asn::variant<sizeof(union_type)>        var;
-       index_type      index {0};
-};
-/*
-E-RABs-ToBeModified-ModReqItemIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-E-RABs-ToBeModified-ModReqItem  CRITICALITY ignore      TYPE E-RABs-ToBeModified-ModReqItem             PRESENCE mandatory},
-       ...
-}
-*/
-
-struct E_RABs_ToBeModified_ModReqItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeModified_ModReqItem() { set(id_E_RABs_ToBeModified_ModReqItem); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_E_RABs_ToBeModified_ModReqItem)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_E_RABs_ToBeModified_ModReqItem);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeModified_ModReqItem() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               E_RABs_ToBeModified_ModReqItem& select_id_E_RABs_ToBeModified_ModReqItem() { return set<E_RABs_ToBeModified_ModReqItem>(1); }
-               E_RABs_ToBeModified_ModReqItem const* get_id_E_RABs_ToBeModified_ModReqItem() const { return get<E_RABs_ToBeModified_ModReqItem>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<E_RABs_ToBeModified_ModReqItem>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<E_RABs_ToBeModified_ModReqItem>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_E_RABs_ToBeModified_ModReqItem()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<E_RABs_ToBeModified_ModReqItem>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(E_RABs_ToBeModified_ModReqItem)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeModified_ModReqItem() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeModified-List-ModReq ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeModified-ModReqItemIEs} }
-*/
-
-struct E_RABs_ToBeModified_List_ModReq_elm : ProtocolIE_Single_Container<E_RABs_ToBeModified_ModReqItemIEs>
-{
-       static constexpr const char* name() {return "E_RABs_ToBeModified_List_ModReq_elm";}
-       using parent_t = ProtocolIE_Single_Container<E_RABs_ToBeModified_ModReqItemIEs>;
-
-};
-struct E_RABs_ToBeModified_List_ModReq : asn::sequenceof<E_RABs_ToBeModified_List_ModReq_elm>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeModified-List-ModReq";}
-       using parent_t = asn::sequenceof<E_RABs_ToBeModified_List_ModReq_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxnoofBearers >>;
-
-};
-/*
-E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       { ID id-RLC-Status                      CRITICALITY ignore                      EXTENSION RLC-Status                            PRESENCE optional },
-       ...
-}
-*/
-
-struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_RLC_Status() { set(id_RLC_Status); type=1;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_RLC_Status)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_RLC_Status);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_RLC_Status() { set(ignore); type=1;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               RLC_Status& select_id_RLC_Status() { return set<RLC_Status>(1); }
-               RLC_Status const* get_id_RLC_Status() const { return get<RLC_Status>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<RLC_Status>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<RLC_Status>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_RLC_Status()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<RLC_Status>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(RLC_Status)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_RLC_Status() { set(optional); type=1;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(optional)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresent ::= SEQUENCE {
-       full-E-RAB-Level-QoS-Parameters                 E-RAB-Level-QoS-Parameters                                                                                                                                              OPTIONAL,
-       max-MN-admit-E-RAB-Level-QoS-Parameters GBR-QosInformation                                                                                                                                              OPTIONAL,
-       meNB-DL-GTP-TEIDatMCG                                   GTPtunnelEndpoint                                                                                                                                                               OPTIONAL,
-       s1-UL-GTPtunnelEndpoint                                 GTPtunnelEndpoint                                                                                                                                                               OPTIONAL,
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresentExtIEs} }      OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent : asn::sequence<5, 0, true, 5>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresent";}
-       using parent_t = asn::sequence<5, 0, true, 5>;
-       struct full_E_RAB_Level_QoS_Parameters_t : E_RAB_Level_QoS_Parameters
-       {
-               static constexpr const char* name() {return "full_E_RAB_Level_QoS_Parameters_t";}
-               using parent_t = E_RAB_Level_QoS_Parameters;
-               static constexpr bool optional = true;
-
-       };
-       full_E_RAB_Level_QoS_Parameters_t& set_full_E_RAB_Level_QoS_Parameters() { full_E_RAB_Level_QoS_Parameters.setpresent(true); return full_E_RAB_Level_QoS_Parameters;}
-       full_E_RAB_Level_QoS_Parameters_t const* get_full_E_RAB_Level_QoS_Parameters() const {return full_E_RAB_Level_QoS_Parameters.is_valid() ? &full_E_RAB_Level_QoS_Parameters : nullptr;}
-       struct max_MN_admit_E_RAB_Level_QoS_Parameters_t : GBR_QosInformation
-       {
-               static constexpr const char* name() {return "max_MN_admit_E_RAB_Level_QoS_Parameters_t";}
-               using parent_t = GBR_QosInformation;
-               static constexpr bool optional = true;
-
-       };
-       max_MN_admit_E_RAB_Level_QoS_Parameters_t& set_max_MN_admit_E_RAB_Level_QoS_Parameters() { max_MN_admit_E_RAB_Level_QoS_Parameters.setpresent(true); return max_MN_admit_E_RAB_Level_QoS_Parameters;}
-       max_MN_admit_E_RAB_Level_QoS_Parameters_t const* get_max_MN_admit_E_RAB_Level_QoS_Parameters() const {return max_MN_admit_E_RAB_Level_QoS_Parameters.is_valid() ? &max_MN_admit_E_RAB_Level_QoS_Parameters : nullptr;}
-       struct meNB_DL_GTP_TEIDatMCG_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "meNB_DL_GTP_TEIDatMCG_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       meNB_DL_GTP_TEIDatMCG_t& set_meNB_DL_GTP_TEIDatMCG() { meNB_DL_GTP_TEIDatMCG.setpresent(true); return meNB_DL_GTP_TEIDatMCG;}
-       meNB_DL_GTP_TEIDatMCG_t const* get_meNB_DL_GTP_TEIDatMCG() const {return meNB_DL_GTP_TEIDatMCG.is_valid() ? &meNB_DL_GTP_TEIDatMCG : nullptr;}
-       struct s1_UL_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "s1_UL_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       s1_UL_GTPtunnelEndpoint_t& set_s1_UL_GTPtunnelEndpoint() { s1_UL_GTPtunnelEndpoint.setpresent(true); return s1_UL_GTPtunnelEndpoint;}
-       s1_UL_GTPtunnelEndpoint_t const* get_s1_UL_GTPtunnelEndpoint() const {return s1_UL_GTPtunnelEndpoint.is_valid() ? &s1_UL_GTPtunnelEndpoint : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresentExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(full_E_RAB_Level_QoS_Parameters);
-               v(max_MN_admit_E_RAB_Level_QoS_Parameters);
-               v(meNB_DL_GTP_TEIDatMCG);
-               v(s1_UL_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(full_E_RAB_Level_QoS_Parameters);
-               v(max_MN_admit_E_RAB_Level_QoS_Parameters);
-               v(meNB_DL_GTP_TEIDatMCG);
-               v(s1_UL_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               full_E_RAB_Level_QoS_Parameters.clear();
-               max_MN_admit_E_RAB_Level_QoS_Parameters.clear();
-               meNB_DL_GTP_TEIDatMCG.clear();
-               s1_UL_GTPtunnelEndpoint.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       full_E_RAB_Level_QoS_Parameters_t       full_E_RAB_Level_QoS_Parameters;
-       max_MN_admit_E_RAB_Level_QoS_Parameters_t       max_MN_admit_E_RAB_Level_QoS_Parameters;
-       meNB_DL_GTP_TEIDatMCG_t meNB_DL_GTP_TEIDatMCG;
-       s1_UL_GTPtunnelEndpoint_t       s1_UL_GTPtunnelEndpoint;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       { ID id-uLpDCPSnLength                                                  CRITICALITY ignore      EXTENSION PDCPSnLength                                  PRESENCE optional}|
-       { ID id-dLPDCPSnLength                                                  CRITICALITY ignore      EXTENSION PDCPSnLength                                  PRESENCE optional}|
-       { ID id-secondarymeNBULGTPTEIDatPDCP                            CRITICALITY ignore      EXTENSION GTPtunnelEndpoint                     PRESENCE optional},
-       ...
-}
-*/
-
-struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_uLpDCPSnLength() { set(id_uLpDCPSnLength); type=1;}
-               void select_id_dLPDCPSnLength() { set(id_dLPDCPSnLength); type=2;}
-               void select_id_secondarymeNBULGTPTEIDatPDCP() { set(id_secondarymeNBULGTPTEIDatPDCP); type=3;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_uLpDCPSnLength)) { type = 1; return true; }
-                       else if(equal(id_dLPDCPSnLength)) { type = 2; return true; }
-                       else if(equal(id_secondarymeNBULGTPTEIDatPDCP)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_uLpDCPSnLength);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_dLPDCPSnLength);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_secondarymeNBULGTPTEIDatPDCP);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_uLpDCPSnLength() { set(ignore); type=1;}
-               void select_id_dLPDCPSnLength() { set(ignore); type=2;}
-               void select_id_secondarymeNBULGTPTEIDatPDCP() { set(ignore); type=3;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               PDCPSnLength& select_id_uLpDCPSnLength() { return set<PDCPSnLength>(1); }
-               PDCPSnLength const* get_id_uLpDCPSnLength() const { return get<PDCPSnLength>(1); }
-               PDCPSnLength& select_id_dLPDCPSnLength() { return set<PDCPSnLength>(2); }
-               PDCPSnLength const* get_id_dLPDCPSnLength() const { return get<PDCPSnLength>(2); }
-               GTPtunnelEndpoint& select_id_secondarymeNBULGTPTEIDatPDCP() { return set<GTPtunnelEndpoint>(3); }
-               GTPtunnelEndpoint const* get_id_secondarymeNBULGTPTEIDatPDCP() const { return get<GTPtunnelEndpoint>(3); }
-               bool is_unknown() const { return type == 4; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<PDCPSnLength>(); break;
-                       case 2: var.destroy<PDCPSnLength>(); break;
-                       case 3: var.destroy<GTPtunnelEndpoint>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<PDCPSnLength>(1);
-                       v.template operator()<PDCPSnLength>(2);
-                       v.template operator()<GTPtunnelEndpoint>(3);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_uLpDCPSnLength()); return true;
-                       case 2: v(select_id_dLPDCPSnLength()); return true;
-                       case 3: v(select_id_secondarymeNBULGTPTEIDatPDCP()); return true;
-                       case 4: if(type != 4) {clear(); asn::base::set();} type = 4; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<PDCPSnLength>()); return true;
-                       case 2: v(var.as<PDCPSnLength>()); return true;
-                       case 3: v(var.as<GTPtunnelEndpoint>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(GTPtunnelEndpoint)];
-                       char dummy2[sizeof(PDCPSnLength)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_uLpDCPSnLength() { set(optional); type=1;}
-               void select_id_dLPDCPSnLength() { set(optional); type=2;}
-               void select_id_secondarymeNBULGTPTEIDatPDCP() { set(optional); type=3;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(optional)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else if(equal(optional)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresent ::= SEQUENCE {
-       requested-SCG-E-RAB-Level-QoS-Parameters                E-RAB-Level-QoS-Parameters                                                                                                                                                      OPTIONAL,
-       meNB-UL-GTP-TEIDatPDCP                                          GTPtunnelEndpoint                                                                                                                                                                       OPTIONAL,
-       uL-Configuration                                                                ULConfiguration                                                                                                                                                                         OPTIONAL,
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresentExtIEs} }   OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent : asn::sequence<4, 0, true, 4>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresent";}
-       using parent_t = asn::sequence<4, 0, true, 4>;
-       struct requested_SCG_E_RAB_Level_QoS_Parameters_t : E_RAB_Level_QoS_Parameters
-       {
-               static constexpr const char* name() {return "requested_SCG_E_RAB_Level_QoS_Parameters_t";}
-               using parent_t = E_RAB_Level_QoS_Parameters;
-               static constexpr bool optional = true;
-
-       };
-       requested_SCG_E_RAB_Level_QoS_Parameters_t& set_requested_SCG_E_RAB_Level_QoS_Parameters() { requested_SCG_E_RAB_Level_QoS_Parameters.setpresent(true); return requested_SCG_E_RAB_Level_QoS_Parameters;}
-       requested_SCG_E_RAB_Level_QoS_Parameters_t const* get_requested_SCG_E_RAB_Level_QoS_Parameters() const {return requested_SCG_E_RAB_Level_QoS_Parameters.is_valid() ? &requested_SCG_E_RAB_Level_QoS_Parameters : nullptr;}
-       struct meNB_UL_GTP_TEIDatPDCP_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "meNB_UL_GTP_TEIDatPDCP_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       meNB_UL_GTP_TEIDatPDCP_t& set_meNB_UL_GTP_TEIDatPDCP() { meNB_UL_GTP_TEIDatPDCP.setpresent(true); return meNB_UL_GTP_TEIDatPDCP;}
-       meNB_UL_GTP_TEIDatPDCP_t const* get_meNB_UL_GTP_TEIDatPDCP() const {return meNB_UL_GTP_TEIDatPDCP.is_valid() ? &meNB_UL_GTP_TEIDatPDCP : nullptr;}
-       struct uL_Configuration_t : ULConfiguration
-       {
-               static constexpr const char* name() {return "uL_Configuration_t";}
-               using parent_t = ULConfiguration;
-               static constexpr bool optional = true;
-
-       };
-       uL_Configuration_t& set_uL_Configuration() { uL_Configuration.setpresent(true); return uL_Configuration;}
-       uL_Configuration_t const* get_uL_Configuration() const {return uL_Configuration.is_valid() ? &uL_Configuration : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(requested_SCG_E_RAB_Level_QoS_Parameters);
-               v(meNB_UL_GTP_TEIDatPDCP);
-               v(uL_Configuration);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(requested_SCG_E_RAB_Level_QoS_Parameters);
-               v(meNB_UL_GTP_TEIDatPDCP);
-               v(uL_Configuration);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               requested_SCG_E_RAB_Level_QoS_Parameters.clear();
-               meNB_UL_GTP_TEIDatPDCP.clear();
-               uL_Configuration.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       requested_SCG_E_RAB_Level_QoS_Parameters_t      requested_SCG_E_RAB_Level_QoS_Parameters;
-       meNB_UL_GTP_TEIDatPDCP_t        meNB_UL_GTP_TEIDatPDCP;
-       uL_Configuration_t      uL_Configuration;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeModified-SgNBModReq-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_ToBeModified_SgNBModReq_ItemExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeModified-SgNBModReq-Item ::= SEQUENCE {
-       e-RAB-ID                                                                E-RAB-ID,
-       en-DC-ResourceConfiguration                     EN-DC-ResourceConfiguration,
-       resource-configuration                          CHOICE {
-               sgNBPDCPpresent                                         E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPpresent,
-               sgNBPDCPnotpresent                                      E-RABs-ToBeModified-SgNBModReq-Item-SgNBPDCPnotpresent,
-               ...
-       },
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeModified-SgNBModReq-ItemExtIEs} }      OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeModified_SgNBModReq_Item : asn::sequence<4, 0, true, 1>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeModified-SgNBModReq-Item";}
-       using parent_t = asn::sequence<4, 0, true, 1>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct en_DC_ResourceConfiguration_t : EN_DC_ResourceConfiguration
-       {
-               static constexpr const char* name() {return "en_DC_ResourceConfiguration_t";}
-               using parent_t = EN_DC_ResourceConfiguration;
-
-       };
-       en_DC_ResourceConfiguration_t& ref_en_DC_ResourceConfiguration() {return en_DC_ResourceConfiguration;}
-       en_DC_ResourceConfiguration_t const& ref_en_DC_ResourceConfiguration() const {return en_DC_ResourceConfiguration;}
-       struct resource_configuration_t : asn::choice<2, 0, true>
-       {
-               static constexpr const char* name() {return "resource_configuration_t";}
-               using parent_t = asn::choice<2, 0, true>;
-               index_type get_index() const {return index;}
-               bool is_unknown() const {return index == 3;}
-               void set_unknown() { set_index(3);  }
-               ~resource_configuration_t() {clear();}
-               struct sgNBPDCPpresent_t : E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent
-               {
-                       static constexpr const char* name() {return "sgNBPDCPpresent_t";}
-                       using parent_t = E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPpresent;
-
-               };
-               struct sgNBPDCPnotpresent_t : E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent
-               {
-                       static constexpr const char* name() {return "sgNBPDCPnotpresent_t";}
-                       using parent_t = E_RABs_ToBeModified_SgNBModReq_Item_SgNBPDCPnotpresent;
-
-               };
-               void clear()
-               {
-                       switch(get_index())
-                       {
-                       case 1: var.destroy<sgNBPDCPpresent_t>(); break;
-                       case 2: var.destroy<sgNBPDCPnotpresent_t>(); break;
-                       }
-                       index = 0;
-                       base::clear();
-               }
-               template<typename V> bool decode(size_t idx, V& v)
-               {
-                       clear();
-                       switch(idx)
-                       {
-                       case 1: set_index(1); return v(var.build<sgNBPDCPpresent_t>());
-                       case 2: set_index(2); return v(var.build<sgNBPDCPnotpresent_t>());
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       switch(get_index())
-                       {
-                       case 1: return v(var.as<sgNBPDCPpresent_t>());
-                       case 2: return v(var.as<sgNBPDCPnotpresent_t>());
-                       }
-                       return false;
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<sgNBPDCPpresent_t>(1);
-                       v.template operator()<sgNBPDCPnotpresent_t>(2);
-
-               }
-               sgNBPDCPpresent_t& select_sgNBPDCPpresent() { if(get_index() != 1) { clear(); set_index(1); return var.build<sgNBPDCPpresent_t>();} return var.as<sgNBPDCPpresent_t>();}
-               sgNBPDCPpresent_t const* get_sgNBPDCPpresent() const { if(get_index() == 1) { return &var.as<sgNBPDCPpresent_t>();} return nullptr; }
-               sgNBPDCPnotpresent_t& select_sgNBPDCPnotpresent() { if(get_index() != 2) { clear(); set_index(2); return var.build<sgNBPDCPnotpresent_t>();} return var.as<sgNBPDCPnotpresent_t>();}
-               sgNBPDCPnotpresent_t const* get_sgNBPDCPnotpresent() const { if(get_index() == 2) { return &var.as<sgNBPDCPnotpresent_t>();} return nullptr; }
-               private:
-               void set_index(index_type i) {index = i; base::set();}
-               union union_type
-               {
-                       char dummy1[sizeof(sgNBPDCPpresent_t)];
-                       char dummy2[sizeof(sgNBPDCPnotpresent_t)];
-
-               };
-               asn::variant<sizeof(union_type)>        var;
-               index_type      index {0};
-       };
-       resource_configuration_t& ref_resource_configuration() {return resource_configuration;}
-       resource_configuration_t const& ref_resource_configuration() const {return resource_configuration;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeModified_SgNBModReq_ItemExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeModified_SgNBModReq_ItemExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(en_DC_ResourceConfiguration);
-               v(resource_configuration);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(en_DC_ResourceConfiguration);
-               v(resource_configuration);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               en_DC_ResourceConfiguration.clear();
-               resource_configuration.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       en_DC_ResourceConfiguration_t   en_DC_ResourceConfiguration;
-       resource_configuration_t        resource_configuration;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeModified-SgNBModReq-ItemIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-E-RABs-ToBeModified-SgNBModReq-Item     CRITICALITY ignore      TYPE E-RABs-ToBeModified-SgNBModReq-Item                PRESENCE mandatory},
-       ...
-}
-*/
-
-struct E_RABs_ToBeModified_SgNBModReq_ItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeModified_SgNBModReq_Item() { set(id_E_RABs_ToBeModified_SgNBModReq_Item); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_E_RABs_ToBeModified_SgNBModReq_Item)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_E_RABs_ToBeModified_SgNBModReq_Item);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeModified_SgNBModReq_Item() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               E_RABs_ToBeModified_SgNBModReq_Item& select_id_E_RABs_ToBeModified_SgNBModReq_Item() { return set<E_RABs_ToBeModified_SgNBModReq_Item>(1); }
-               E_RABs_ToBeModified_SgNBModReq_Item const* get_id_E_RABs_ToBeModified_SgNBModReq_Item() const { return get<E_RABs_ToBeModified_SgNBModReq_Item>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<E_RABs_ToBeModified_SgNBModReq_Item>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<E_RABs_ToBeModified_SgNBModReq_Item>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_E_RABs_ToBeModified_SgNBModReq_Item()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<E_RABs_ToBeModified_SgNBModReq_Item>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(E_RABs_ToBeModified_SgNBModReq_Item)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeModified_SgNBModReq_Item() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeModified-SgNBModReq-List ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeModified-SgNBModReq-ItemIEs} }
-*/
-
-struct E_RABs_ToBeModified_SgNBModReq_List_elm : ProtocolIE_Single_Container<E_RABs_ToBeModified_SgNBModReq_ItemIEs>
-{
-       static constexpr const char* name() {return "E_RABs_ToBeModified_SgNBModReq_List_elm";}
-       using parent_t = ProtocolIE_Single_Container<E_RABs_ToBeModified_SgNBModReq_ItemIEs>;
-
-};
-struct E_RABs_ToBeModified_SgNBModReq_List : asn::sequenceof<E_RABs_ToBeModified_SgNBModReq_List_elm>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeModified-SgNBModReq-List";}
-       using parent_t = asn::sequenceof<E_RABs_ToBeModified_SgNBModReq_List_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxnoofBearers >>;
-
-};
-/*
-E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       { ID id-uLpDCPSnLength                                                  CRITICALITY ignore      EXTENSION PDCPSnLength                                  PRESENCE optional}|
-       { ID id-dLPDCPSnLength                                                  CRITICALITY ignore      EXTENSION PDCPSnLength                                  PRESENCE optional}|
-       { ID id-new-drb-ID-req                                                  CRITICALITY ignore      EXTENSION NewDRBIDrequest                               PRESENCE optional},
-       ...
-}
-*/
-
-struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_uLpDCPSnLength() { set(id_uLpDCPSnLength); type=1;}
-               void select_id_dLPDCPSnLength() { set(id_dLPDCPSnLength); type=2;}
-               void select_id_new_drb_ID_req() { set(id_new_drb_ID_req); type=3;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_uLpDCPSnLength)) { type = 1; return true; }
-                       else if(equal(id_dLPDCPSnLength)) { type = 2; return true; }
-                       else if(equal(id_new_drb_ID_req)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_uLpDCPSnLength);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_dLPDCPSnLength);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_new_drb_ID_req);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_uLpDCPSnLength() { set(ignore); type=1;}
-               void select_id_dLPDCPSnLength() { set(ignore); type=2;}
-               void select_id_new_drb_ID_req() { set(ignore); type=3;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               PDCPSnLength& select_id_uLpDCPSnLength() { return set<PDCPSnLength>(1); }
-               PDCPSnLength const* get_id_uLpDCPSnLength() const { return get<PDCPSnLength>(1); }
-               PDCPSnLength& select_id_dLPDCPSnLength() { return set<PDCPSnLength>(2); }
-               PDCPSnLength const* get_id_dLPDCPSnLength() const { return get<PDCPSnLength>(2); }
-               NewDRBIDrequest& select_id_new_drb_ID_req() { return set<NewDRBIDrequest>(3); }
-               NewDRBIDrequest const* get_id_new_drb_ID_req() const { return get<NewDRBIDrequest>(3); }
-               bool is_unknown() const { return type == 4; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<PDCPSnLength>(); break;
-                       case 2: var.destroy<PDCPSnLength>(); break;
-                       case 3: var.destroy<NewDRBIDrequest>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<PDCPSnLength>(1);
-                       v.template operator()<PDCPSnLength>(2);
-                       v.template operator()<NewDRBIDrequest>(3);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_uLpDCPSnLength()); return true;
-                       case 2: v(select_id_dLPDCPSnLength()); return true;
-                       case 3: v(select_id_new_drb_ID_req()); return true;
-                       case 4: if(type != 4) {clear(); asn::base::set();} type = 4; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<PDCPSnLength>()); return true;
-                       case 2: v(var.as<PDCPSnLength>()); return true;
-                       case 3: v(var.as<NewDRBIDrequest>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(NewDRBIDrequest)];
-                       char dummy2[sizeof(PDCPSnLength)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_uLpDCPSnLength() { set(optional); type=1;}
-               void select_id_dLPDCPSnLength() { set(optional); type=2;}
-               void select_id_new_drb_ID_req() { set(optional); type=3;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(optional)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else if(equal(optional)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresent ::= SEQUENCE {
-       requested-MCG-E-RAB-Level-QoS-Parameters                E-RAB-Level-QoS-Parameters                                                                                                      OPTIONAL,
-       uL-Configuration                                                                ULConfiguration                                                                                                                         OPTIONAL,
-       sgNB-UL-GTP-TEIDatPDCP                                          GTPtunnelEndpoint                                                                                                                       OPTIONAL,
-       s1-DL-GTP-TEIDatSgNB                                                    GTPtunnelEndpoint                                                                                                                       OPTIONAL,
-       iE-Extensions                           ProtocolExtensionContainer { {E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresentExtIEs} }             OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent : asn::sequence<5, 0, true, 5>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresent";}
-       using parent_t = asn::sequence<5, 0, true, 5>;
-       struct requested_MCG_E_RAB_Level_QoS_Parameters_t : E_RAB_Level_QoS_Parameters
-       {
-               static constexpr const char* name() {return "requested_MCG_E_RAB_Level_QoS_Parameters_t";}
-               using parent_t = E_RAB_Level_QoS_Parameters;
-               static constexpr bool optional = true;
-
-       };
-       requested_MCG_E_RAB_Level_QoS_Parameters_t& set_requested_MCG_E_RAB_Level_QoS_Parameters() { requested_MCG_E_RAB_Level_QoS_Parameters.setpresent(true); return requested_MCG_E_RAB_Level_QoS_Parameters;}
-       requested_MCG_E_RAB_Level_QoS_Parameters_t const* get_requested_MCG_E_RAB_Level_QoS_Parameters() const {return requested_MCG_E_RAB_Level_QoS_Parameters.is_valid() ? &requested_MCG_E_RAB_Level_QoS_Parameters : nullptr;}
-       struct uL_Configuration_t : ULConfiguration
-       {
-               static constexpr const char* name() {return "uL_Configuration_t";}
-               using parent_t = ULConfiguration;
-               static constexpr bool optional = true;
-
-       };
-       uL_Configuration_t& set_uL_Configuration() { uL_Configuration.setpresent(true); return uL_Configuration;}
-       uL_Configuration_t const* get_uL_Configuration() const {return uL_Configuration.is_valid() ? &uL_Configuration : nullptr;}
-       struct sgNB_UL_GTP_TEIDatPDCP_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "sgNB_UL_GTP_TEIDatPDCP_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       sgNB_UL_GTP_TEIDatPDCP_t& set_sgNB_UL_GTP_TEIDatPDCP() { sgNB_UL_GTP_TEIDatPDCP.setpresent(true); return sgNB_UL_GTP_TEIDatPDCP;}
-       sgNB_UL_GTP_TEIDatPDCP_t const* get_sgNB_UL_GTP_TEIDatPDCP() const {return sgNB_UL_GTP_TEIDatPDCP.is_valid() ? &sgNB_UL_GTP_TEIDatPDCP : nullptr;}
-       struct s1_DL_GTP_TEIDatSgNB_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "s1_DL_GTP_TEIDatSgNB_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       s1_DL_GTP_TEIDatSgNB_t& set_s1_DL_GTP_TEIDatSgNB() { s1_DL_GTP_TEIDatSgNB.setpresent(true); return s1_DL_GTP_TEIDatSgNB;}
-       s1_DL_GTP_TEIDatSgNB_t const* get_s1_DL_GTP_TEIDatSgNB() const {return s1_DL_GTP_TEIDatSgNB.is_valid() ? &s1_DL_GTP_TEIDatSgNB : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresentExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(requested_MCG_E_RAB_Level_QoS_Parameters);
-               v(uL_Configuration);
-               v(sgNB_UL_GTP_TEIDatPDCP);
-               v(s1_DL_GTP_TEIDatSgNB);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(requested_MCG_E_RAB_Level_QoS_Parameters);
-               v(uL_Configuration);
-               v(sgNB_UL_GTP_TEIDatPDCP);
-               v(s1_DL_GTP_TEIDatSgNB);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               requested_MCG_E_RAB_Level_QoS_Parameters.clear();
-               uL_Configuration.clear();
-               sgNB_UL_GTP_TEIDatPDCP.clear();
-               s1_DL_GTP_TEIDatSgNB.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       requested_MCG_E_RAB_Level_QoS_Parameters_t      requested_MCG_E_RAB_Level_QoS_Parameters;
-       uL_Configuration_t      uL_Configuration;
-       sgNB_UL_GTP_TEIDatPDCP_t        sgNB_UL_GTP_TEIDatPDCP;
-       s1_DL_GTP_TEIDatSgNB_t  s1_DL_GTP_TEIDatSgNB;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       { ID id-RLC-Status                      CRITICALITY ignore                      EXTENSION RLC-Status                            PRESENCE optional}|
-       { ID id-lCID                            CRITICALITY ignore                      EXTENSION LCID                                          PRESENCE optional},
-       ...
-}
-*/
-
-struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_RLC_Status() { set(id_RLC_Status); type=1;}
-               void select_id_lCID() { set(id_lCID); type=2;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_RLC_Status)) { type = 1; return true; }
-                       else if(equal(id_lCID)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_RLC_Status);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_lCID);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_RLC_Status() { set(ignore); type=1;}
-               void select_id_lCID() { set(ignore); type=2;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               RLC_Status& select_id_RLC_Status() { return set<RLC_Status>(1); }
-               RLC_Status const* get_id_RLC_Status() const { return get<RLC_Status>(1); }
-               LCID& select_id_lCID() { return set<LCID>(2); }
-               LCID const* get_id_lCID() const { return get<LCID>(2); }
-               bool is_unknown() const { return type == 3; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<RLC_Status>(); break;
-                       case 2: var.destroy<LCID>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<RLC_Status>(1);
-                       v.template operator()<LCID>(2);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_RLC_Status()); return true;
-                       case 2: v(select_id_lCID()); return true;
-                       case 3: if(type != 3) {clear(); asn::base::set();} type = 3; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<RLC_Status>()); return true;
-                       case 2: v(var.as<LCID>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(LCID)];
-                       char dummy2[sizeof(RLC_Status)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_RLC_Status() { set(optional); type=1;}
-               void select_id_lCID() { set(optional); type=2;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(optional)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresent ::= SEQUENCE {
-       sgNB-DL-GTP-TEIDatSCG                           GTPtunnelEndpoint                               OPTIONAL,
-       secondary-sgNB-DL-GTP-TEIDatSCG         GTPtunnelEndpoint                               OPTIONAL,
-       iE-Extensions                           ProtocolExtensionContainer { {E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresentExtIEs} }          OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent : asn::sequence<3, 0, true, 3>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresent";}
-       using parent_t = asn::sequence<3, 0, true, 3>;
-       struct sgNB_DL_GTP_TEIDatSCG_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "sgNB_DL_GTP_TEIDatSCG_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       sgNB_DL_GTP_TEIDatSCG_t& set_sgNB_DL_GTP_TEIDatSCG() { sgNB_DL_GTP_TEIDatSCG.setpresent(true); return sgNB_DL_GTP_TEIDatSCG;}
-       sgNB_DL_GTP_TEIDatSCG_t const* get_sgNB_DL_GTP_TEIDatSCG() const {return sgNB_DL_GTP_TEIDatSCG.is_valid() ? &sgNB_DL_GTP_TEIDatSCG : nullptr;}
-       struct secondary_sgNB_DL_GTP_TEIDatSCG_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "secondary_sgNB_DL_GTP_TEIDatSCG_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       secondary_sgNB_DL_GTP_TEIDatSCG_t& set_secondary_sgNB_DL_GTP_TEIDatSCG() { secondary_sgNB_DL_GTP_TEIDatSCG.setpresent(true); return secondary_sgNB_DL_GTP_TEIDatSCG;}
-       secondary_sgNB_DL_GTP_TEIDatSCG_t const* get_secondary_sgNB_DL_GTP_TEIDatSCG() const {return secondary_sgNB_DL_GTP_TEIDatSCG.is_valid() ? &secondary_sgNB_DL_GTP_TEIDatSCG : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresentExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(sgNB_DL_GTP_TEIDatSCG);
-               v(secondary_sgNB_DL_GTP_TEIDatSCG);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(sgNB_DL_GTP_TEIDatSCG);
-               v(secondary_sgNB_DL_GTP_TEIDatSCG);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               sgNB_DL_GTP_TEIDatSCG.clear();
-               secondary_sgNB_DL_GTP_TEIDatSCG.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       sgNB_DL_GTP_TEIDatSCG_t sgNB_DL_GTP_TEIDatSCG;
-       secondary_sgNB_DL_GTP_TEIDatSCG_t       secondary_sgNB_DL_GTP_TEIDatSCG;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeModified-SgNBModReqd-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeModified-SgNBModReqd-Item ::= SEQUENCE {
-       e-RAB-ID                                                                E-RAB-ID,
-       en-DC-ResourceConfiguration                     EN-DC-ResourceConfiguration,
-       resource-configuration                          CHOICE {
-               sgNBPDCPpresent                                         E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPpresent,
-               sgNBPDCPnotpresent                                      E-RABs-ToBeModified-SgNBModReqd-Item-SgNBPDCPnotpresent,
-               ...
-       },
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeModified-SgNBModReqd-ItemExtIEs} }     OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeModified_SgNBModReqd_Item : asn::sequence<4, 0, true, 1>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeModified-SgNBModReqd-Item";}
-       using parent_t = asn::sequence<4, 0, true, 1>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct en_DC_ResourceConfiguration_t : EN_DC_ResourceConfiguration
-       {
-               static constexpr const char* name() {return "en_DC_ResourceConfiguration_t";}
-               using parent_t = EN_DC_ResourceConfiguration;
-
-       };
-       en_DC_ResourceConfiguration_t& ref_en_DC_ResourceConfiguration() {return en_DC_ResourceConfiguration;}
-       en_DC_ResourceConfiguration_t const& ref_en_DC_ResourceConfiguration() const {return en_DC_ResourceConfiguration;}
-       struct resource_configuration_t : asn::choice<2, 0, true>
-       {
-               static constexpr const char* name() {return "resource_configuration_t";}
-               using parent_t = asn::choice<2, 0, true>;
-               index_type get_index() const {return index;}
-               bool is_unknown() const {return index == 3;}
-               void set_unknown() { set_index(3);  }
-               ~resource_configuration_t() {clear();}
-               struct sgNBPDCPpresent_t : E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent
-               {
-                       static constexpr const char* name() {return "sgNBPDCPpresent_t";}
-                       using parent_t = E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPpresent;
-
-               };
-               struct sgNBPDCPnotpresent_t : E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent
-               {
-                       static constexpr const char* name() {return "sgNBPDCPnotpresent_t";}
-                       using parent_t = E_RABs_ToBeModified_SgNBModReqd_Item_SgNBPDCPnotpresent;
-
-               };
-               void clear()
-               {
-                       switch(get_index())
-                       {
-                       case 1: var.destroy<sgNBPDCPpresent_t>(); break;
-                       case 2: var.destroy<sgNBPDCPnotpresent_t>(); break;
-                       }
-                       index = 0;
-                       base::clear();
-               }
-               template<typename V> bool decode(size_t idx, V& v)
-               {
-                       clear();
-                       switch(idx)
-                       {
-                       case 1: set_index(1); return v(var.build<sgNBPDCPpresent_t>());
-                       case 2: set_index(2); return v(var.build<sgNBPDCPnotpresent_t>());
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       switch(get_index())
-                       {
-                       case 1: return v(var.as<sgNBPDCPpresent_t>());
-                       case 2: return v(var.as<sgNBPDCPnotpresent_t>());
-                       }
-                       return false;
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<sgNBPDCPpresent_t>(1);
-                       v.template operator()<sgNBPDCPnotpresent_t>(2);
-
-               }
-               sgNBPDCPpresent_t& select_sgNBPDCPpresent() { if(get_index() != 1) { clear(); set_index(1); return var.build<sgNBPDCPpresent_t>();} return var.as<sgNBPDCPpresent_t>();}
-               sgNBPDCPpresent_t const* get_sgNBPDCPpresent() const { if(get_index() == 1) { return &var.as<sgNBPDCPpresent_t>();} return nullptr; }
-               sgNBPDCPnotpresent_t& select_sgNBPDCPnotpresent() { if(get_index() != 2) { clear(); set_index(2); return var.build<sgNBPDCPnotpresent_t>();} return var.as<sgNBPDCPnotpresent_t>();}
-               sgNBPDCPnotpresent_t const* get_sgNBPDCPnotpresent() const { if(get_index() == 2) { return &var.as<sgNBPDCPnotpresent_t>();} return nullptr; }
-               private:
-               void set_index(index_type i) {index = i; base::set();}
-               union union_type
-               {
-                       char dummy1[sizeof(sgNBPDCPpresent_t)];
-                       char dummy2[sizeof(sgNBPDCPnotpresent_t)];
-
-               };
-               asn::variant<sizeof(union_type)>        var;
-               index_type      index {0};
-       };
-       resource_configuration_t& ref_resource_configuration() {return resource_configuration;}
-       resource_configuration_t const& ref_resource_configuration() const {return resource_configuration;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeModified_SgNBModReqd_ItemExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(en_DC_ResourceConfiguration);
-               v(resource_configuration);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(en_DC_ResourceConfiguration);
-               v(resource_configuration);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               en_DC_ResourceConfiguration.clear();
-               resource_configuration.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       en_DC_ResourceConfiguration_t   en_DC_ResourceConfiguration;
-       resource_configuration_t        resource_configuration;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeModified-SgNBModReqd-ItemIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-E-RABs-ToBeModified-SgNBModReqd-Item     CRITICALITY ignore             TYPE E-RABs-ToBeModified-SgNBModReqd-Item               PRESENCE mandatory },
-       ...
-}
-*/
-
-struct E_RABs_ToBeModified_SgNBModReqd_ItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeModified_SgNBModReqd_Item() { set(id_E_RABs_ToBeModified_SgNBModReqd_Item); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_E_RABs_ToBeModified_SgNBModReqd_Item)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_E_RABs_ToBeModified_SgNBModReqd_Item);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeModified_SgNBModReqd_Item() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               E_RABs_ToBeModified_SgNBModReqd_Item& select_id_E_RABs_ToBeModified_SgNBModReqd_Item() { return set<E_RABs_ToBeModified_SgNBModReqd_Item>(1); }
-               E_RABs_ToBeModified_SgNBModReqd_Item const* get_id_E_RABs_ToBeModified_SgNBModReqd_Item() const { return get<E_RABs_ToBeModified_SgNBModReqd_Item>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<E_RABs_ToBeModified_SgNBModReqd_Item>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<E_RABs_ToBeModified_SgNBModReqd_Item>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_E_RABs_ToBeModified_SgNBModReqd_Item()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<E_RABs_ToBeModified_SgNBModReqd_Item>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(E_RABs_ToBeModified_SgNBModReqd_Item)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeModified_SgNBModReqd_Item() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeModified-SgNBModReqdList ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeModified-SgNBModReqd-ItemIEs} }
-*/
-
-struct E_RABs_ToBeModified_SgNBModReqdList_elm : ProtocolIE_Single_Container<E_RABs_ToBeModified_SgNBModReqd_ItemIEs>
-{
-       static constexpr const char* name() {return "E_RABs_ToBeModified_SgNBModReqdList_elm";}
-       using parent_t = ProtocolIE_Single_Container<E_RABs_ToBeModified_SgNBModReqd_ItemIEs>;
-
-};
-struct E_RABs_ToBeModified_SgNBModReqdList : asn::sequenceof<E_RABs_ToBeModified_SgNBModReqdList_elm>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeModified-SgNBModReqdList";}
-       using parent_t = asn::sequenceof<E_RABs_ToBeModified_SgNBModReqdList_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxnoofBearers >>;
-
-};
-/*
-E-RABs-ToBeReleased-ModReqItem-SCG-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeReleased-ModReqItem-SCG-Bearer ::= SEQUENCE {
-       e-RAB-ID                                                E-RAB-ID,
-       dL-Forwarding-GTPtunnelEndpoint                 GTPtunnelEndpoint                                                                                               OPTIONAL,
-       uL-Forwarding-GTPtunnelEndpoint                 GTPtunnelEndpoint                                                                                               OPTIONAL,
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeReleased-ModReqItem-SCG-BearerExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_ModReqItem_SCG_Bearer : asn::sequence<4, 0, true, 3>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeReleased-ModReqItem-SCG-Bearer";}
-       using parent_t = asn::sequence<4, 0, true, 3>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct dL_Forwarding_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "dL_Forwarding_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       dL_Forwarding_GTPtunnelEndpoint_t& set_dL_Forwarding_GTPtunnelEndpoint() { dL_Forwarding_GTPtunnelEndpoint.setpresent(true); return dL_Forwarding_GTPtunnelEndpoint;}
-       dL_Forwarding_GTPtunnelEndpoint_t const* get_dL_Forwarding_GTPtunnelEndpoint() const {return dL_Forwarding_GTPtunnelEndpoint.is_valid() ? &dL_Forwarding_GTPtunnelEndpoint : nullptr;}
-       struct uL_Forwarding_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "uL_Forwarding_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       uL_Forwarding_GTPtunnelEndpoint_t& set_uL_Forwarding_GTPtunnelEndpoint() { uL_Forwarding_GTPtunnelEndpoint.setpresent(true); return uL_Forwarding_GTPtunnelEndpoint;}
-       uL_Forwarding_GTPtunnelEndpoint_t const* get_uL_Forwarding_GTPtunnelEndpoint() const {return uL_Forwarding_GTPtunnelEndpoint.is_valid() ? &uL_Forwarding_GTPtunnelEndpoint : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeReleased_ModReqItem_SCG_BearerExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(dL_Forwarding_GTPtunnelEndpoint);
-               v(uL_Forwarding_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(dL_Forwarding_GTPtunnelEndpoint);
-               v(uL_Forwarding_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               dL_Forwarding_GTPtunnelEndpoint.clear();
-               uL_Forwarding_GTPtunnelEndpoint.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       dL_Forwarding_GTPtunnelEndpoint_t       dL_Forwarding_GTPtunnelEndpoint;
-       uL_Forwarding_GTPtunnelEndpoint_t       uL_Forwarding_GTPtunnelEndpoint;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeReleased-ModReqItem-Split-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeReleased-ModReqItem-Split-Bearer ::= SEQUENCE {
-       e-RAB-ID                                                E-RAB-ID,
-       dL-Forwarding-GTPtunnelEndpoint                 GTPtunnelEndpoint                                                                                               OPTIONAL,
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeReleased-ModReqItem-Split-BearerExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_ModReqItem_Split_Bearer : asn::sequence<3, 0, true, 2>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeReleased-ModReqItem-Split-Bearer";}
-       using parent_t = asn::sequence<3, 0, true, 2>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct dL_Forwarding_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "dL_Forwarding_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       dL_Forwarding_GTPtunnelEndpoint_t& set_dL_Forwarding_GTPtunnelEndpoint() { dL_Forwarding_GTPtunnelEndpoint.setpresent(true); return dL_Forwarding_GTPtunnelEndpoint;}
-       dL_Forwarding_GTPtunnelEndpoint_t const* get_dL_Forwarding_GTPtunnelEndpoint() const {return dL_Forwarding_GTPtunnelEndpoint.is_valid() ? &dL_Forwarding_GTPtunnelEndpoint : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeReleased_ModReqItem_Split_BearerExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(dL_Forwarding_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(dL_Forwarding_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               dL_Forwarding_GTPtunnelEndpoint.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       dL_Forwarding_GTPtunnelEndpoint_t       dL_Forwarding_GTPtunnelEndpoint;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeReleased-ModReqItem ::= CHOICE {
-       sCG-Bearer              E-RABs-ToBeReleased-ModReqItem-SCG-Bearer,
-       split-Bearer    E-RABs-ToBeReleased-ModReqItem-Split-Bearer,
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_ModReqItem : asn::choice<2, 0, true>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeReleased-ModReqItem";}
-       using parent_t = asn::choice<2, 0, true>;
-       index_type get_index() const {return index;}
-       bool is_unknown() const {return index == 3;}
-       void set_unknown() { set_index(3);  }
-       ~E_RABs_ToBeReleased_ModReqItem() {clear();}
-       struct sCG_Bearer_t : E_RABs_ToBeReleased_ModReqItem_SCG_Bearer
-       {
-               static constexpr const char* name() {return "sCG_Bearer_t";}
-               using parent_t = E_RABs_ToBeReleased_ModReqItem_SCG_Bearer;
-
-       };
-       struct split_Bearer_t : E_RABs_ToBeReleased_ModReqItem_Split_Bearer
-       {
-               static constexpr const char* name() {return "split_Bearer_t";}
-               using parent_t = E_RABs_ToBeReleased_ModReqItem_Split_Bearer;
-
-       };
-       void clear()
-       {
-               switch(get_index())
-               {
-               case 1: var.destroy<sCG_Bearer_t>(); break;
-               case 2: var.destroy<split_Bearer_t>(); break;
-               }
-               index = 0;
-               base::clear();
-       }
-       template<typename V> bool decode(size_t idx, V& v)
-       {
-               clear();
-               switch(idx)
-               {
-               case 1: set_index(1); return v(var.build<sCG_Bearer_t>());
-               case 2: set_index(2); return v(var.build<split_Bearer_t>());
-               }
-               return false;
-
-       }
-       template<typename V> bool encode(V& v) const
-       {
-               switch(get_index())
-               {
-               case 1: return v(var.as<sCG_Bearer_t>());
-               case 2: return v(var.as<split_Bearer_t>());
-               }
-               return false;
-       }
-       template<typename V> static inline void enumerate(V& v)
-       {
-               v.template operator()<sCG_Bearer_t>(1);
-               v.template operator()<split_Bearer_t>(2);
-
-       }
-       sCG_Bearer_t& select_sCG_Bearer() { if(get_index() != 1) { clear(); set_index(1); return var.build<sCG_Bearer_t>();} return var.as<sCG_Bearer_t>();}
-       sCG_Bearer_t const* get_sCG_Bearer() const { if(get_index() == 1) { return &var.as<sCG_Bearer_t>();} return nullptr; }
-       split_Bearer_t& select_split_Bearer() { if(get_index() != 2) { clear(); set_index(2); return var.build<split_Bearer_t>();} return var.as<split_Bearer_t>();}
-       split_Bearer_t const* get_split_Bearer() const { if(get_index() == 2) { return &var.as<split_Bearer_t>();} return nullptr; }
-       private:
-       void set_index(index_type i) {index = i; base::set();}
-       union union_type
-       {
-               char dummy1[sizeof(sCG_Bearer_t)];
-               char dummy2[sizeof(split_Bearer_t)];
-
-       };
-       asn::variant<sizeof(union_type)>        var;
-       index_type      index {0};
-};
-/*
-E-RABs-ToBeReleased-ModReqItemIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-E-RABs-ToBeReleased-ModReqItem  CRITICALITY ignore      TYPE E-RABs-ToBeReleased-ModReqItem             PRESENCE mandatory},
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_ModReqItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeReleased_ModReqItem() { set(id_E_RABs_ToBeReleased_ModReqItem); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_E_RABs_ToBeReleased_ModReqItem)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_E_RABs_ToBeReleased_ModReqItem);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeReleased_ModReqItem() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               E_RABs_ToBeReleased_ModReqItem& select_id_E_RABs_ToBeReleased_ModReqItem() { return set<E_RABs_ToBeReleased_ModReqItem>(1); }
-               E_RABs_ToBeReleased_ModReqItem const* get_id_E_RABs_ToBeReleased_ModReqItem() const { return get<E_RABs_ToBeReleased_ModReqItem>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<E_RABs_ToBeReleased_ModReqItem>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<E_RABs_ToBeReleased_ModReqItem>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_E_RABs_ToBeReleased_ModReqItem()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<E_RABs_ToBeReleased_ModReqItem>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(E_RABs_ToBeReleased_ModReqItem)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeReleased_ModReqItem() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeReleased-List-ModReq ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeReleased-ModReqItemIEs} }
-*/
-
-struct E_RABs_ToBeReleased_List_ModReq_elm : ProtocolIE_Single_Container<E_RABs_ToBeReleased_ModReqItemIEs>
-{
-       static constexpr const char* name() {return "E_RABs_ToBeReleased_List_ModReq_elm";}
-       using parent_t = ProtocolIE_Single_Container<E_RABs_ToBeReleased_ModReqItemIEs>;
-
-};
-struct E_RABs_ToBeReleased_List_ModReq : asn::sequenceof<E_RABs_ToBeReleased_List_ModReq_elm>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeReleased-List-ModReq";}
-       using parent_t = asn::sequenceof<E_RABs_ToBeReleased_List_ModReq_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxnoofBearers >>;
-
-};
-/*
-E-RABs-ToBeReleased-RelConfItem-SCG-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeReleased-RelConfItem-SCG-Bearer ::= SEQUENCE {
-       e-RAB-ID                                                E-RAB-ID,
-       uL-Forwarding-GTPtunnelEndpoint                 GTPtunnelEndpoint                                                                                               OPTIONAL,
-       dL-Forwarding-GTPtunnelEndpoint                 GTPtunnelEndpoint                                                                                               OPTIONAL,
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeReleased-RelConfItem-SCG-BearerExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_RelConfItem_SCG_Bearer : asn::sequence<4, 0, true, 3>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeReleased-RelConfItem-SCG-Bearer";}
-       using parent_t = asn::sequence<4, 0, true, 3>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct uL_Forwarding_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "uL_Forwarding_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       uL_Forwarding_GTPtunnelEndpoint_t& set_uL_Forwarding_GTPtunnelEndpoint() { uL_Forwarding_GTPtunnelEndpoint.setpresent(true); return uL_Forwarding_GTPtunnelEndpoint;}
-       uL_Forwarding_GTPtunnelEndpoint_t const* get_uL_Forwarding_GTPtunnelEndpoint() const {return uL_Forwarding_GTPtunnelEndpoint.is_valid() ? &uL_Forwarding_GTPtunnelEndpoint : nullptr;}
-       struct dL_Forwarding_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "dL_Forwarding_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       dL_Forwarding_GTPtunnelEndpoint_t& set_dL_Forwarding_GTPtunnelEndpoint() { dL_Forwarding_GTPtunnelEndpoint.setpresent(true); return dL_Forwarding_GTPtunnelEndpoint;}
-       dL_Forwarding_GTPtunnelEndpoint_t const* get_dL_Forwarding_GTPtunnelEndpoint() const {return dL_Forwarding_GTPtunnelEndpoint.is_valid() ? &dL_Forwarding_GTPtunnelEndpoint : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeReleased_RelConfItem_SCG_BearerExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(uL_Forwarding_GTPtunnelEndpoint);
-               v(dL_Forwarding_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(uL_Forwarding_GTPtunnelEndpoint);
-               v(dL_Forwarding_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               uL_Forwarding_GTPtunnelEndpoint.clear();
-               dL_Forwarding_GTPtunnelEndpoint.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       uL_Forwarding_GTPtunnelEndpoint_t       uL_Forwarding_GTPtunnelEndpoint;
-       dL_Forwarding_GTPtunnelEndpoint_t       dL_Forwarding_GTPtunnelEndpoint;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeReleased-RelConfItem-Split-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeReleased-RelConfItem-Split-Bearer ::= SEQUENCE {
-       e-RAB-ID                                                E-RAB-ID,
-       dL-Forwarding-GTPtunnelEndpoint                 GTPtunnelEndpoint                                                                                                       OPTIONAL,
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeReleased-RelConfItem-Split-BearerExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_RelConfItem_Split_Bearer : asn::sequence<3, 0, true, 2>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeReleased-RelConfItem-Split-Bearer";}
-       using parent_t = asn::sequence<3, 0, true, 2>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct dL_Forwarding_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "dL_Forwarding_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       dL_Forwarding_GTPtunnelEndpoint_t& set_dL_Forwarding_GTPtunnelEndpoint() { dL_Forwarding_GTPtunnelEndpoint.setpresent(true); return dL_Forwarding_GTPtunnelEndpoint;}
-       dL_Forwarding_GTPtunnelEndpoint_t const* get_dL_Forwarding_GTPtunnelEndpoint() const {return dL_Forwarding_GTPtunnelEndpoint.is_valid() ? &dL_Forwarding_GTPtunnelEndpoint : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeReleased_RelConfItem_Split_BearerExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(dL_Forwarding_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(dL_Forwarding_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               dL_Forwarding_GTPtunnelEndpoint.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       dL_Forwarding_GTPtunnelEndpoint_t       dL_Forwarding_GTPtunnelEndpoint;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeReleased-RelConfItem ::= CHOICE {
-       sCG-Bearer              E-RABs-ToBeReleased-RelConfItem-SCG-Bearer,
-       split-Bearer    E-RABs-ToBeReleased-RelConfItem-Split-Bearer,
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_RelConfItem : asn::choice<2, 0, true>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeReleased-RelConfItem";}
-       using parent_t = asn::choice<2, 0, true>;
-       index_type get_index() const {return index;}
-       bool is_unknown() const {return index == 3;}
-       void set_unknown() { set_index(3);  }
-       ~E_RABs_ToBeReleased_RelConfItem() {clear();}
-       struct sCG_Bearer_t : E_RABs_ToBeReleased_RelConfItem_SCG_Bearer
-       {
-               static constexpr const char* name() {return "sCG_Bearer_t";}
-               using parent_t = E_RABs_ToBeReleased_RelConfItem_SCG_Bearer;
-
-       };
-       struct split_Bearer_t : E_RABs_ToBeReleased_RelConfItem_Split_Bearer
-       {
-               static constexpr const char* name() {return "split_Bearer_t";}
-               using parent_t = E_RABs_ToBeReleased_RelConfItem_Split_Bearer;
-
-       };
-       void clear()
-       {
-               switch(get_index())
-               {
-               case 1: var.destroy<sCG_Bearer_t>(); break;
-               case 2: var.destroy<split_Bearer_t>(); break;
-               }
-               index = 0;
-               base::clear();
-       }
-       template<typename V> bool decode(size_t idx, V& v)
-       {
-               clear();
-               switch(idx)
-               {
-               case 1: set_index(1); return v(var.build<sCG_Bearer_t>());
-               case 2: set_index(2); return v(var.build<split_Bearer_t>());
-               }
-               return false;
-
-       }
-       template<typename V> bool encode(V& v) const
-       {
-               switch(get_index())
-               {
-               case 1: return v(var.as<sCG_Bearer_t>());
-               case 2: return v(var.as<split_Bearer_t>());
-               }
-               return false;
-       }
-       template<typename V> static inline void enumerate(V& v)
-       {
-               v.template operator()<sCG_Bearer_t>(1);
-               v.template operator()<split_Bearer_t>(2);
-
-       }
-       sCG_Bearer_t& select_sCG_Bearer() { if(get_index() != 1) { clear(); set_index(1); return var.build<sCG_Bearer_t>();} return var.as<sCG_Bearer_t>();}
-       sCG_Bearer_t const* get_sCG_Bearer() const { if(get_index() == 1) { return &var.as<sCG_Bearer_t>();} return nullptr; }
-       split_Bearer_t& select_split_Bearer() { if(get_index() != 2) { clear(); set_index(2); return var.build<split_Bearer_t>();} return var.as<split_Bearer_t>();}
-       split_Bearer_t const* get_split_Bearer() const { if(get_index() == 2) { return &var.as<split_Bearer_t>();} return nullptr; }
-       private:
-       void set_index(index_type i) {index = i; base::set();}
-       union union_type
-       {
-               char dummy1[sizeof(sCG_Bearer_t)];
-               char dummy2[sizeof(split_Bearer_t)];
-
-       };
-       asn::variant<sizeof(union_type)>        var;
-       index_type      index {0};
-};
-/*
-E-RABs-ToBeReleased-RelConfItemIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-E-RABs-ToBeReleased-RelConfItem         CRITICALITY ignore              TYPE E-RABs-ToBeReleased-RelConfItem            PRESENCE mandatory},
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_RelConfItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeReleased_RelConfItem() { set(id_E_RABs_ToBeReleased_RelConfItem); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_E_RABs_ToBeReleased_RelConfItem)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_E_RABs_ToBeReleased_RelConfItem);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeReleased_RelConfItem() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               E_RABs_ToBeReleased_RelConfItem& select_id_E_RABs_ToBeReleased_RelConfItem() { return set<E_RABs_ToBeReleased_RelConfItem>(1); }
-               E_RABs_ToBeReleased_RelConfItem const* get_id_E_RABs_ToBeReleased_RelConfItem() const { return get<E_RABs_ToBeReleased_RelConfItem>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<E_RABs_ToBeReleased_RelConfItem>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<E_RABs_ToBeReleased_RelConfItem>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_E_RABs_ToBeReleased_RelConfItem()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<E_RABs_ToBeReleased_RelConfItem>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(E_RABs_ToBeReleased_RelConfItem)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeReleased_RelConfItem() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeReleased-List-RelConf ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeReleased-RelConfItemIEs} }
-*/
-
-struct E_RABs_ToBeReleased_List_RelConf_elm : ProtocolIE_Single_Container<E_RABs_ToBeReleased_RelConfItemIEs>
-{
-       static constexpr const char* name() {return "E_RABs_ToBeReleased_List_RelConf_elm";}
-       using parent_t = ProtocolIE_Single_Container<E_RABs_ToBeReleased_RelConfItemIEs>;
-
-};
-struct E_RABs_ToBeReleased_List_RelConf : asn::sequenceof<E_RABs_ToBeReleased_List_RelConf_elm>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeReleased-List-RelConf";}
-       using parent_t = asn::sequenceof<E_RABs_ToBeReleased_List_RelConf_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxnoofBearers >>;
-
-};
-/*
-E-RABs-ToBeReleased-RelReqItem-SCG-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeReleased-RelReqItem-SCG-Bearer ::= SEQUENCE {
-       e-RAB-ID                                                E-RAB-ID,
-       uL-Forwarding-GTPtunnelEndpoint                 GTPtunnelEndpoint                                                                                               OPTIONAL,
-       dL-Forwarding-GTPtunnelEndpoint                 GTPtunnelEndpoint                                                                                               OPTIONAL,
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeReleased-RelReqItem-SCG-BearerExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_RelReqItem_SCG_Bearer : asn::sequence<4, 0, true, 3>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeReleased-RelReqItem-SCG-Bearer";}
-       using parent_t = asn::sequence<4, 0, true, 3>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct uL_Forwarding_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "uL_Forwarding_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       uL_Forwarding_GTPtunnelEndpoint_t& set_uL_Forwarding_GTPtunnelEndpoint() { uL_Forwarding_GTPtunnelEndpoint.setpresent(true); return uL_Forwarding_GTPtunnelEndpoint;}
-       uL_Forwarding_GTPtunnelEndpoint_t const* get_uL_Forwarding_GTPtunnelEndpoint() const {return uL_Forwarding_GTPtunnelEndpoint.is_valid() ? &uL_Forwarding_GTPtunnelEndpoint : nullptr;}
-       struct dL_Forwarding_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "dL_Forwarding_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       dL_Forwarding_GTPtunnelEndpoint_t& set_dL_Forwarding_GTPtunnelEndpoint() { dL_Forwarding_GTPtunnelEndpoint.setpresent(true); return dL_Forwarding_GTPtunnelEndpoint;}
-       dL_Forwarding_GTPtunnelEndpoint_t const* get_dL_Forwarding_GTPtunnelEndpoint() const {return dL_Forwarding_GTPtunnelEndpoint.is_valid() ? &dL_Forwarding_GTPtunnelEndpoint : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeReleased_RelReqItem_SCG_BearerExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(uL_Forwarding_GTPtunnelEndpoint);
-               v(dL_Forwarding_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(uL_Forwarding_GTPtunnelEndpoint);
-               v(dL_Forwarding_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               uL_Forwarding_GTPtunnelEndpoint.clear();
-               dL_Forwarding_GTPtunnelEndpoint.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       uL_Forwarding_GTPtunnelEndpoint_t       uL_Forwarding_GTPtunnelEndpoint;
-       dL_Forwarding_GTPtunnelEndpoint_t       dL_Forwarding_GTPtunnelEndpoint;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeReleased-RelReqItem-Split-BearerExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeReleased-RelReqItem-Split-Bearer ::= SEQUENCE {
-       e-RAB-ID                                                E-RAB-ID,
-       dL-Forwarding-GTPtunnelEndpoint                 GTPtunnelEndpoint                                                                                                       OPTIONAL,
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeReleased-RelReqItem-Split-BearerExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_RelReqItem_Split_Bearer : asn::sequence<3, 0, true, 2>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeReleased-RelReqItem-Split-Bearer";}
-       using parent_t = asn::sequence<3, 0, true, 2>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct dL_Forwarding_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "dL_Forwarding_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       dL_Forwarding_GTPtunnelEndpoint_t& set_dL_Forwarding_GTPtunnelEndpoint() { dL_Forwarding_GTPtunnelEndpoint.setpresent(true); return dL_Forwarding_GTPtunnelEndpoint;}
-       dL_Forwarding_GTPtunnelEndpoint_t const* get_dL_Forwarding_GTPtunnelEndpoint() const {return dL_Forwarding_GTPtunnelEndpoint.is_valid() ? &dL_Forwarding_GTPtunnelEndpoint : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeReleased_RelReqItem_Split_BearerExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(dL_Forwarding_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(dL_Forwarding_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               dL_Forwarding_GTPtunnelEndpoint.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       dL_Forwarding_GTPtunnelEndpoint_t       dL_Forwarding_GTPtunnelEndpoint;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeReleased-RelReqItem ::= CHOICE {
-       sCG-Bearer              E-RABs-ToBeReleased-RelReqItem-SCG-Bearer,
-       split-Bearer    E-RABs-ToBeReleased-RelReqItem-Split-Bearer,
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_RelReqItem : asn::choice<2, 0, true>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeReleased-RelReqItem";}
-       using parent_t = asn::choice<2, 0, true>;
-       index_type get_index() const {return index;}
-       bool is_unknown() const {return index == 3;}
-       void set_unknown() { set_index(3);  }
-       ~E_RABs_ToBeReleased_RelReqItem() {clear();}
-       struct sCG_Bearer_t : E_RABs_ToBeReleased_RelReqItem_SCG_Bearer
-       {
-               static constexpr const char* name() {return "sCG_Bearer_t";}
-               using parent_t = E_RABs_ToBeReleased_RelReqItem_SCG_Bearer;
-
-       };
-       struct split_Bearer_t : E_RABs_ToBeReleased_RelReqItem_Split_Bearer
-       {
-               static constexpr const char* name() {return "split_Bearer_t";}
-               using parent_t = E_RABs_ToBeReleased_RelReqItem_Split_Bearer;
-
-       };
-       void clear()
-       {
-               switch(get_index())
-               {
-               case 1: var.destroy<sCG_Bearer_t>(); break;
-               case 2: var.destroy<split_Bearer_t>(); break;
-               }
-               index = 0;
-               base::clear();
-       }
-       template<typename V> bool decode(size_t idx, V& v)
-       {
-               clear();
-               switch(idx)
-               {
-               case 1: set_index(1); return v(var.build<sCG_Bearer_t>());
-               case 2: set_index(2); return v(var.build<split_Bearer_t>());
-               }
-               return false;
-
-       }
-       template<typename V> bool encode(V& v) const
-       {
-               switch(get_index())
-               {
-               case 1: return v(var.as<sCG_Bearer_t>());
-               case 2: return v(var.as<split_Bearer_t>());
-               }
-               return false;
-       }
-       template<typename V> static inline void enumerate(V& v)
-       {
-               v.template operator()<sCG_Bearer_t>(1);
-               v.template operator()<split_Bearer_t>(2);
-
-       }
-       sCG_Bearer_t& select_sCG_Bearer() { if(get_index() != 1) { clear(); set_index(1); return var.build<sCG_Bearer_t>();} return var.as<sCG_Bearer_t>();}
-       sCG_Bearer_t const* get_sCG_Bearer() const { if(get_index() == 1) { return &var.as<sCG_Bearer_t>();} return nullptr; }
-       split_Bearer_t& select_split_Bearer() { if(get_index() != 2) { clear(); set_index(2); return var.build<split_Bearer_t>();} return var.as<split_Bearer_t>();}
-       split_Bearer_t const* get_split_Bearer() const { if(get_index() == 2) { return &var.as<split_Bearer_t>();} return nullptr; }
-       private:
-       void set_index(index_type i) {index = i; base::set();}
-       union union_type
-       {
-               char dummy1[sizeof(sCG_Bearer_t)];
-               char dummy2[sizeof(split_Bearer_t)];
-
-       };
-       asn::variant<sizeof(union_type)>        var;
-       index_type      index {0};
-};
-/*
-E-RABs-ToBeReleased-RelReqItemIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-E-RABs-ToBeReleased-RelReqItem          CRITICALITY ignore      TYPE E-RABs-ToBeReleased-RelReqItem             PRESENCE mandatory},
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_RelReqItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeReleased_RelReqItem() { set(id_E_RABs_ToBeReleased_RelReqItem); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_E_RABs_ToBeReleased_RelReqItem)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_E_RABs_ToBeReleased_RelReqItem);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeReleased_RelReqItem() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               E_RABs_ToBeReleased_RelReqItem& select_id_E_RABs_ToBeReleased_RelReqItem() { return set<E_RABs_ToBeReleased_RelReqItem>(1); }
-               E_RABs_ToBeReleased_RelReqItem const* get_id_E_RABs_ToBeReleased_RelReqItem() const { return get<E_RABs_ToBeReleased_RelReqItem>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<E_RABs_ToBeReleased_RelReqItem>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<E_RABs_ToBeReleased_RelReqItem>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_E_RABs_ToBeReleased_RelReqItem()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<E_RABs_ToBeReleased_RelReqItem>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(E_RABs_ToBeReleased_RelReqItem)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeReleased_RelReqItem() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeReleased-List-RelReq ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeReleased-RelReqItemIEs} }
-*/
-
-struct E_RABs_ToBeReleased_List_RelReq_elm : ProtocolIE_Single_Container<E_RABs_ToBeReleased_RelReqItemIEs>
-{
-       static constexpr const char* name() {return "E_RABs_ToBeReleased_List_RelReq_elm";}
-       using parent_t = ProtocolIE_Single_Container<E_RABs_ToBeReleased_RelReqItemIEs>;
-
-};
-struct E_RABs_ToBeReleased_List_RelReq : asn::sequenceof<E_RABs_ToBeReleased_List_RelReq_elm>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeReleased-List-RelReq";}
-       using parent_t = asn::sequenceof<E_RABs_ToBeReleased_List_RelReq_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxnoofBearers >>;
-
-};
-/*
-E-RABs-ToBeReleased-ModReqdItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_ModReqdItemExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeReleased-ModReqdItem ::= SEQUENCE {
-       e-RAB-ID                                                E-RAB-ID,
-       cause                                                   Cause,
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeReleased-ModReqdItemExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_ModReqdItem : asn::sequence<3, 0, true, 1>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeReleased-ModReqdItem";}
-       using parent_t = asn::sequence<3, 0, true, 1>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct cause_t : Cause
-       {
-               static constexpr const char* name() {return "cause_t";}
-               using parent_t = Cause;
-
-       };
-       cause_t& ref_cause() {return cause;}
-       cause_t const& ref_cause() const {return cause;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeReleased_ModReqdItemExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeReleased_ModReqdItemExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(cause);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(cause);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               cause.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       cause_t cause;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeReleased-ModReqdItemIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-E-RABs-ToBeReleased-ModReqdItem  CRITICALITY ignore             TYPE E-RABs-ToBeReleased-ModReqdItem    PRESENCE mandatory },
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_ModReqdItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeReleased_ModReqdItem() { set(id_E_RABs_ToBeReleased_ModReqdItem); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_E_RABs_ToBeReleased_ModReqdItem)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_E_RABs_ToBeReleased_ModReqdItem);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeReleased_ModReqdItem() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               E_RABs_ToBeReleased_ModReqdItem& select_id_E_RABs_ToBeReleased_ModReqdItem() { return set<E_RABs_ToBeReleased_ModReqdItem>(1); }
-               E_RABs_ToBeReleased_ModReqdItem const* get_id_E_RABs_ToBeReleased_ModReqdItem() const { return get<E_RABs_ToBeReleased_ModReqdItem>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<E_RABs_ToBeReleased_ModReqdItem>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<E_RABs_ToBeReleased_ModReqdItem>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_E_RABs_ToBeReleased_ModReqdItem()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<E_RABs_ToBeReleased_ModReqdItem>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(E_RABs_ToBeReleased_ModReqdItem)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeReleased_ModReqdItem() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeReleased-ModReqd ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeReleased-ModReqdItemIEs} }
-*/
-
-struct E_RABs_ToBeReleased_ModReqd_elm : ProtocolIE_Single_Container<E_RABs_ToBeReleased_ModReqdItemIEs>
-{
-       static constexpr const char* name() {return "E_RABs_ToBeReleased_ModReqd_elm";}
-       using parent_t = ProtocolIE_Single_Container<E_RABs_ToBeReleased_ModReqdItemIEs>;
-
-};
-struct E_RABs_ToBeReleased_ModReqd : asn::sequenceof<E_RABs_ToBeReleased_ModReqd_elm>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeReleased-ModReqd";}
-       using parent_t = asn::sequenceof<E_RABs_ToBeReleased_ModReqd_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxnoofBearers >>;
-
-};
-/*
-E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresent ::= SEQUENCE {
-       uL-GTPtunnelEndpoint                    GTPtunnelEndpoint                                                                                                                                                               OPTIONAL,
-       dL-GTPtunnelEndpoint                    GTPtunnelEndpoint                                                                                                                                                               OPTIONAL,
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresentExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent : asn::sequence<3, 0, true, 3>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresent";}
-       using parent_t = asn::sequence<3, 0, true, 3>;
-       struct uL_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "uL_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       uL_GTPtunnelEndpoint_t& set_uL_GTPtunnelEndpoint() { uL_GTPtunnelEndpoint.setpresent(true); return uL_GTPtunnelEndpoint;}
-       uL_GTPtunnelEndpoint_t const* get_uL_GTPtunnelEndpoint() const {return uL_GTPtunnelEndpoint.is_valid() ? &uL_GTPtunnelEndpoint : nullptr;}
-       struct dL_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "dL_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       dL_GTPtunnelEndpoint_t& set_dL_GTPtunnelEndpoint() { dL_GTPtunnelEndpoint.setpresent(true); return dL_GTPtunnelEndpoint;}
-       dL_GTPtunnelEndpoint_t const* get_dL_GTPtunnelEndpoint() const {return dL_GTPtunnelEndpoint.is_valid() ? &dL_GTPtunnelEndpoint : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresentExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(uL_GTPtunnelEndpoint);
-               v(dL_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(uL_GTPtunnelEndpoint);
-               v(dL_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               uL_GTPtunnelEndpoint.clear();
-               dL_GTPtunnelEndpoint.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       uL_GTPtunnelEndpoint_t  uL_GTPtunnelEndpoint;
-       dL_GTPtunnelEndpoint_t  dL_GTPtunnelEndpoint;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresent ::= SEQUENCE {
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresentExtIEs} }  OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent : asn::sequence<1, 0, true, 1>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresent";}
-       using parent_t = asn::sequence<1, 0, true, 1>;
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresentExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               iE_Extensions.clear();
-
-       };
-       private:
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeReleased-SgNBChaConf-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeReleased-SgNBChaConf-Item ::= SEQUENCE {
-       e-RAB-ID                                                        E-RAB-ID,
-       en-DC-ResourceConfiguration                     EN-DC-ResourceConfiguration,
-       resource-configuration                          CHOICE {
-               sgNBPDCPpresent                                         E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPpresent,
-               sgNBPDCPnotpresent                                      E-RABs-ToBeReleased-SgNBChaConf-Item-SgNBPDCPnotpresent,
-               ...
-       },
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeReleased-SgNBChaConf-ItemExtIEs} }     OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_SgNBChaConf_Item : asn::sequence<4, 0, true, 1>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBChaConf-Item";}
-       using parent_t = asn::sequence<4, 0, true, 1>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct en_DC_ResourceConfiguration_t : EN_DC_ResourceConfiguration
-       {
-               static constexpr const char* name() {return "en_DC_ResourceConfiguration_t";}
-               using parent_t = EN_DC_ResourceConfiguration;
-
-       };
-       en_DC_ResourceConfiguration_t& ref_en_DC_ResourceConfiguration() {return en_DC_ResourceConfiguration;}
-       en_DC_ResourceConfiguration_t const& ref_en_DC_ResourceConfiguration() const {return en_DC_ResourceConfiguration;}
-       struct resource_configuration_t : asn::choice<2, 0, true>
-       {
-               static constexpr const char* name() {return "resource_configuration_t";}
-               using parent_t = asn::choice<2, 0, true>;
-               index_type get_index() const {return index;}
-               bool is_unknown() const {return index == 3;}
-               void set_unknown() { set_index(3);  }
-               ~resource_configuration_t() {clear();}
-               struct sgNBPDCPpresent_t : E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent
-               {
-                       static constexpr const char* name() {return "sgNBPDCPpresent_t";}
-                       using parent_t = E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPpresent;
-
-               };
-               struct sgNBPDCPnotpresent_t : E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent
-               {
-                       static constexpr const char* name() {return "sgNBPDCPnotpresent_t";}
-                       using parent_t = E_RABs_ToBeReleased_SgNBChaConf_Item_SgNBPDCPnotpresent;
-
-               };
-               void clear()
-               {
-                       switch(get_index())
-                       {
-                       case 1: var.destroy<sgNBPDCPpresent_t>(); break;
-                       case 2: var.destroy<sgNBPDCPnotpresent_t>(); break;
-                       }
-                       index = 0;
-                       base::clear();
-               }
-               template<typename V> bool decode(size_t idx, V& v)
-               {
-                       clear();
-                       switch(idx)
-                       {
-                       case 1: set_index(1); return v(var.build<sgNBPDCPpresent_t>());
-                       case 2: set_index(2); return v(var.build<sgNBPDCPnotpresent_t>());
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       switch(get_index())
-                       {
-                       case 1: return v(var.as<sgNBPDCPpresent_t>());
-                       case 2: return v(var.as<sgNBPDCPnotpresent_t>());
-                       }
-                       return false;
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<sgNBPDCPpresent_t>(1);
-                       v.template operator()<sgNBPDCPnotpresent_t>(2);
-
-               }
-               sgNBPDCPpresent_t& select_sgNBPDCPpresent() { if(get_index() != 1) { clear(); set_index(1); return var.build<sgNBPDCPpresent_t>();} return var.as<sgNBPDCPpresent_t>();}
-               sgNBPDCPpresent_t const* get_sgNBPDCPpresent() const { if(get_index() == 1) { return &var.as<sgNBPDCPpresent_t>();} return nullptr; }
-               sgNBPDCPnotpresent_t& select_sgNBPDCPnotpresent() { if(get_index() != 2) { clear(); set_index(2); return var.build<sgNBPDCPnotpresent_t>();} return var.as<sgNBPDCPnotpresent_t>();}
-               sgNBPDCPnotpresent_t const* get_sgNBPDCPnotpresent() const { if(get_index() == 2) { return &var.as<sgNBPDCPnotpresent_t>();} return nullptr; }
-               private:
-               void set_index(index_type i) {index = i; base::set();}
-               union union_type
-               {
-                       char dummy1[sizeof(sgNBPDCPpresent_t)];
-                       char dummy2[sizeof(sgNBPDCPnotpresent_t)];
-
-               };
-               asn::variant<sizeof(union_type)>        var;
-               index_type      index {0};
-       };
-       resource_configuration_t& ref_resource_configuration() {return resource_configuration;}
-       resource_configuration_t const& ref_resource_configuration() const {return resource_configuration;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeReleased_SgNBChaConf_ItemExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(en_DC_ResourceConfiguration);
-               v(resource_configuration);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(en_DC_ResourceConfiguration);
-               v(resource_configuration);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               en_DC_ResourceConfiguration.clear();
-               resource_configuration.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       en_DC_ResourceConfiguration_t   en_DC_ResourceConfiguration;
-       resource_configuration_t        resource_configuration;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeReleased-SgNBChaConf-ItemIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-E-RABs-ToBeReleased-SgNBChaConf-Item            CRITICALITY ignore              TYPE E-RABs-ToBeReleased-SgNBChaConf-Item               PRESENCE mandatory},
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_SgNBChaConf_ItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeReleased_SgNBChaConf_Item() { set(id_E_RABs_ToBeReleased_SgNBChaConf_Item); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_E_RABs_ToBeReleased_SgNBChaConf_Item)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_E_RABs_ToBeReleased_SgNBChaConf_Item);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeReleased_SgNBChaConf_Item() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               E_RABs_ToBeReleased_SgNBChaConf_Item& select_id_E_RABs_ToBeReleased_SgNBChaConf_Item() { return set<E_RABs_ToBeReleased_SgNBChaConf_Item>(1); }
-               E_RABs_ToBeReleased_SgNBChaConf_Item const* get_id_E_RABs_ToBeReleased_SgNBChaConf_Item() const { return get<E_RABs_ToBeReleased_SgNBChaConf_Item>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<E_RABs_ToBeReleased_SgNBChaConf_Item>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<E_RABs_ToBeReleased_SgNBChaConf_Item>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_E_RABs_ToBeReleased_SgNBChaConf_Item()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<E_RABs_ToBeReleased_SgNBChaConf_Item>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(E_RABs_ToBeReleased_SgNBChaConf_Item)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeReleased_SgNBChaConf_Item() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeReleased-SgNBChaConfList ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeReleased-SgNBChaConf-ItemIEs} }
-*/
-
-struct E_RABs_ToBeReleased_SgNBChaConfList_elm : ProtocolIE_Single_Container<E_RABs_ToBeReleased_SgNBChaConf_ItemIEs>
-{
-       static constexpr const char* name() {return "E_RABs_ToBeReleased_SgNBChaConfList_elm";}
-       using parent_t = ProtocolIE_Single_Container<E_RABs_ToBeReleased_SgNBChaConf_ItemIEs>;
-
-};
-struct E_RABs_ToBeReleased_SgNBChaConfList : asn::sequenceof<E_RABs_ToBeReleased_SgNBChaConfList_elm>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBChaConfList";}
-       using parent_t = asn::sequenceof<E_RABs_ToBeReleased_SgNBChaConfList_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxnoofBearers >>;
-
-};
-/*
-E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresent ::= SEQUENCE {
-       dL-GTPtunnelEndpoint                    GTPtunnelEndpoint                                                                                                                                                               OPTIONAL,
-       uL-GTPtunnelEndpoint                    GTPtunnelEndpoint                                                                                                                                                               OPTIONAL,
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresentExtIEs} }      OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent : asn::sequence<3, 0, true, 3>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresent";}
-       using parent_t = asn::sequence<3, 0, true, 3>;
-       struct dL_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "dL_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       dL_GTPtunnelEndpoint_t& set_dL_GTPtunnelEndpoint() { dL_GTPtunnelEndpoint.setpresent(true); return dL_GTPtunnelEndpoint;}
-       dL_GTPtunnelEndpoint_t const* get_dL_GTPtunnelEndpoint() const {return dL_GTPtunnelEndpoint.is_valid() ? &dL_GTPtunnelEndpoint : nullptr;}
-       struct uL_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "uL_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       uL_GTPtunnelEndpoint_t& set_uL_GTPtunnelEndpoint() { uL_GTPtunnelEndpoint.setpresent(true); return uL_GTPtunnelEndpoint;}
-       uL_GTPtunnelEndpoint_t const* get_uL_GTPtunnelEndpoint() const {return uL_GTPtunnelEndpoint.is_valid() ? &uL_GTPtunnelEndpoint : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresentExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(dL_GTPtunnelEndpoint);
-               v(uL_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(dL_GTPtunnelEndpoint);
-               v(uL_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               dL_GTPtunnelEndpoint.clear();
-               uL_GTPtunnelEndpoint.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       dL_GTPtunnelEndpoint_t  dL_GTPtunnelEndpoint;
-       uL_GTPtunnelEndpoint_t  uL_GTPtunnelEndpoint;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresent ::= SEQUENCE {
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresentExtIEs} }   OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent : asn::sequence<1, 0, true, 1>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresent";}
-       using parent_t = asn::sequence<1, 0, true, 1>;
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresentExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               iE_Extensions.clear();
-
-       };
-       private:
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeReleased-SgNBModReq-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeReleased-SgNBModReq-Item ::= SEQUENCE {
-       e-RAB-ID                                                                E-RAB-ID,
-       en-DC-ResourceConfiguration                     EN-DC-ResourceConfiguration,
-       resource-configuration                          CHOICE {
-               sgNBPDCPpresent                                         E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPpresent,
-               sgNBPDCPnotpresent                                      E-RABs-ToBeReleased-SgNBModReq-Item-SgNBPDCPnotpresent,
-               ...
-       },
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeReleased-SgNBModReq-ItemExtIEs} }      OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_SgNBModReq_Item : asn::sequence<4, 0, true, 1>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBModReq-Item";}
-       using parent_t = asn::sequence<4, 0, true, 1>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct en_DC_ResourceConfiguration_t : EN_DC_ResourceConfiguration
-       {
-               static constexpr const char* name() {return "en_DC_ResourceConfiguration_t";}
-               using parent_t = EN_DC_ResourceConfiguration;
-
-       };
-       en_DC_ResourceConfiguration_t& ref_en_DC_ResourceConfiguration() {return en_DC_ResourceConfiguration;}
-       en_DC_ResourceConfiguration_t const& ref_en_DC_ResourceConfiguration() const {return en_DC_ResourceConfiguration;}
-       struct resource_configuration_t : asn::choice<2, 0, true>
-       {
-               static constexpr const char* name() {return "resource_configuration_t";}
-               using parent_t = asn::choice<2, 0, true>;
-               index_type get_index() const {return index;}
-               bool is_unknown() const {return index == 3;}
-               void set_unknown() { set_index(3);  }
-               ~resource_configuration_t() {clear();}
-               struct sgNBPDCPpresent_t : E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent
-               {
-                       static constexpr const char* name() {return "sgNBPDCPpresent_t";}
-                       using parent_t = E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPpresent;
-
-               };
-               struct sgNBPDCPnotpresent_t : E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent
-               {
-                       static constexpr const char* name() {return "sgNBPDCPnotpresent_t";}
-                       using parent_t = E_RABs_ToBeReleased_SgNBModReq_Item_SgNBPDCPnotpresent;
-
-               };
-               void clear()
-               {
-                       switch(get_index())
-                       {
-                       case 1: var.destroy<sgNBPDCPpresent_t>(); break;
-                       case 2: var.destroy<sgNBPDCPnotpresent_t>(); break;
-                       }
-                       index = 0;
-                       base::clear();
-               }
-               template<typename V> bool decode(size_t idx, V& v)
-               {
-                       clear();
-                       switch(idx)
-                       {
-                       case 1: set_index(1); return v(var.build<sgNBPDCPpresent_t>());
-                       case 2: set_index(2); return v(var.build<sgNBPDCPnotpresent_t>());
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       switch(get_index())
-                       {
-                       case 1: return v(var.as<sgNBPDCPpresent_t>());
-                       case 2: return v(var.as<sgNBPDCPnotpresent_t>());
-                       }
-                       return false;
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<sgNBPDCPpresent_t>(1);
-                       v.template operator()<sgNBPDCPnotpresent_t>(2);
-
-               }
-               sgNBPDCPpresent_t& select_sgNBPDCPpresent() { if(get_index() != 1) { clear(); set_index(1); return var.build<sgNBPDCPpresent_t>();} return var.as<sgNBPDCPpresent_t>();}
-               sgNBPDCPpresent_t const* get_sgNBPDCPpresent() const { if(get_index() == 1) { return &var.as<sgNBPDCPpresent_t>();} return nullptr; }
-               sgNBPDCPnotpresent_t& select_sgNBPDCPnotpresent() { if(get_index() != 2) { clear(); set_index(2); return var.build<sgNBPDCPnotpresent_t>();} return var.as<sgNBPDCPnotpresent_t>();}
-               sgNBPDCPnotpresent_t const* get_sgNBPDCPnotpresent() const { if(get_index() == 2) { return &var.as<sgNBPDCPnotpresent_t>();} return nullptr; }
-               private:
-               void set_index(index_type i) {index = i; base::set();}
-               union union_type
-               {
-                       char dummy1[sizeof(sgNBPDCPpresent_t)];
-                       char dummy2[sizeof(sgNBPDCPnotpresent_t)];
-
-               };
-               asn::variant<sizeof(union_type)>        var;
-               index_type      index {0};
-       };
-       resource_configuration_t& ref_resource_configuration() {return resource_configuration;}
-       resource_configuration_t const& ref_resource_configuration() const {return resource_configuration;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeReleased_SgNBModReq_ItemExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(en_DC_ResourceConfiguration);
-               v(resource_configuration);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(en_DC_ResourceConfiguration);
-               v(resource_configuration);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               en_DC_ResourceConfiguration.clear();
-               resource_configuration.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       en_DC_ResourceConfiguration_t   en_DC_ResourceConfiguration;
-       resource_configuration_t        resource_configuration;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeReleased-SgNBModReq-ItemIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-E-RABs-ToBeReleased-SgNBModReq-Item     CRITICALITY ignore      TYPE E-RABs-ToBeReleased-SgNBModReq-Item                PRESENCE mandatory},
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_SgNBModReq_ItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeReleased_SgNBModReq_Item() { set(id_E_RABs_ToBeReleased_SgNBModReq_Item); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_E_RABs_ToBeReleased_SgNBModReq_Item)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_E_RABs_ToBeReleased_SgNBModReq_Item);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeReleased_SgNBModReq_Item() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               E_RABs_ToBeReleased_SgNBModReq_Item& select_id_E_RABs_ToBeReleased_SgNBModReq_Item() { return set<E_RABs_ToBeReleased_SgNBModReq_Item>(1); }
-               E_RABs_ToBeReleased_SgNBModReq_Item const* get_id_E_RABs_ToBeReleased_SgNBModReq_Item() const { return get<E_RABs_ToBeReleased_SgNBModReq_Item>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<E_RABs_ToBeReleased_SgNBModReq_Item>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<E_RABs_ToBeReleased_SgNBModReq_Item>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_E_RABs_ToBeReleased_SgNBModReq_Item()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<E_RABs_ToBeReleased_SgNBModReq_Item>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(E_RABs_ToBeReleased_SgNBModReq_Item)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeReleased_SgNBModReq_Item() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeReleased-SgNBModReq-List ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeReleased-SgNBModReq-ItemIEs} }
-*/
-
-struct E_RABs_ToBeReleased_SgNBModReq_List_elm : ProtocolIE_Single_Container<E_RABs_ToBeReleased_SgNBModReq_ItemIEs>
-{
-       static constexpr const char* name() {return "E_RABs_ToBeReleased_SgNBModReq_List_elm";}
-       using parent_t = ProtocolIE_Single_Container<E_RABs_ToBeReleased_SgNBModReq_ItemIEs>;
-
-};
-struct E_RABs_ToBeReleased_SgNBModReq_List : asn::sequenceof<E_RABs_ToBeReleased_SgNBModReq_List_elm>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBModReq-List";}
-       using parent_t = asn::sequenceof<E_RABs_ToBeReleased_SgNBModReq_List_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxnoofBearers >>;
-
-};
-/*
-E-RABs-ToBeReleased-SgNBModReqd-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       { ID id-RLCMode-transferred                                     CRITICALITY ignore      EXTENSION RLCMode                                       PRESENCE optional},
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_RLCMode_transferred() { set(id_RLCMode_transferred); type=1;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_RLCMode_transferred)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_RLCMode_transferred);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_RLCMode_transferred() { set(ignore); type=1;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               RLCMode& select_id_RLCMode_transferred() { return set<RLCMode>(1); }
-               RLCMode const* get_id_RLCMode_transferred() const { return get<RLCMode>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<RLCMode>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<RLCMode>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_RLCMode_transferred()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<RLCMode>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(RLCMode)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_RLCMode_transferred() { set(optional); type=1;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(optional)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeReleased-SgNBModReqd-Item ::= SEQUENCE {
-       e-RAB-ID                                                        E-RAB-ID,
-       cause                                                   Cause,
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeReleased-SgNBModReqd-ItemExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_SgNBModReqd_Item : asn::sequence<3, 0, true, 1>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBModReqd-Item";}
-       using parent_t = asn::sequence<3, 0, true, 1>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct cause_t : Cause
-       {
-               static constexpr const char* name() {return "cause_t";}
-               using parent_t = Cause;
-
-       };
-       cause_t& ref_cause() {return cause;}
-       cause_t const& ref_cause() const {return cause;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeReleased_SgNBModReqd_ItemExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(cause);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(cause);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               cause.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       cause_t cause;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeReleased-SgNBModReqd-ItemIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-E-RABs-ToBeReleased-SgNBModReqd-Item     CRITICALITY ignore             TYPE E-RABs-ToBeReleased-SgNBModReqd-Item               PRESENCE mandatory },
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_SgNBModReqd_ItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeReleased_SgNBModReqd_Item() { set(id_E_RABs_ToBeReleased_SgNBModReqd_Item); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_E_RABs_ToBeReleased_SgNBModReqd_Item)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_E_RABs_ToBeReleased_SgNBModReqd_Item);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeReleased_SgNBModReqd_Item() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               E_RABs_ToBeReleased_SgNBModReqd_Item& select_id_E_RABs_ToBeReleased_SgNBModReqd_Item() { return set<E_RABs_ToBeReleased_SgNBModReqd_Item>(1); }
-               E_RABs_ToBeReleased_SgNBModReqd_Item const* get_id_E_RABs_ToBeReleased_SgNBModReqd_Item() const { return get<E_RABs_ToBeReleased_SgNBModReqd_Item>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<E_RABs_ToBeReleased_SgNBModReqd_Item>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<E_RABs_ToBeReleased_SgNBModReqd_Item>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_E_RABs_ToBeReleased_SgNBModReqd_Item()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<E_RABs_ToBeReleased_SgNBModReqd_Item>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(E_RABs_ToBeReleased_SgNBModReqd_Item)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeReleased_SgNBModReqd_Item() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeReleased-SgNBModReqdList ::= SEQUENCE (SIZE (1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeReleased-SgNBModReqd-ItemIEs} }
-*/
-
-struct E_RABs_ToBeReleased_SgNBModReqdList_elm : ProtocolIE_Single_Container<E_RABs_ToBeReleased_SgNBModReqd_ItemIEs>
-{
-       static constexpr const char* name() {return "E_RABs_ToBeReleased_SgNBModReqdList_elm";}
-       using parent_t = ProtocolIE_Single_Container<E_RABs_ToBeReleased_SgNBModReqd_ItemIEs>;
-
-};
-struct E_RABs_ToBeReleased_SgNBModReqdList : asn::sequenceof<E_RABs_ToBeReleased_SgNBModReqdList_elm>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBModReqdList";}
-       using parent_t = asn::sequenceof<E_RABs_ToBeReleased_SgNBModReqdList_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxnoofBearers >>;
-
-};
-/*
-E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresent ::= SEQUENCE {
-       uL-GTPtunnelEndpoint                    GTPtunnelEndpoint                                                                                                                                                               OPTIONAL,
-       dL-GTPtunnelEndpoint                    GTPtunnelEndpoint                                                                                                                                                               OPTIONAL,
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresentExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent : asn::sequence<3, 0, true, 3>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresent";}
-       using parent_t = asn::sequence<3, 0, true, 3>;
-       struct uL_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "uL_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       uL_GTPtunnelEndpoint_t& set_uL_GTPtunnelEndpoint() { uL_GTPtunnelEndpoint.setpresent(true); return uL_GTPtunnelEndpoint;}
-       uL_GTPtunnelEndpoint_t const* get_uL_GTPtunnelEndpoint() const {return uL_GTPtunnelEndpoint.is_valid() ? &uL_GTPtunnelEndpoint : nullptr;}
-       struct dL_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "dL_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       dL_GTPtunnelEndpoint_t& set_dL_GTPtunnelEndpoint() { dL_GTPtunnelEndpoint.setpresent(true); return dL_GTPtunnelEndpoint;}
-       dL_GTPtunnelEndpoint_t const* get_dL_GTPtunnelEndpoint() const {return dL_GTPtunnelEndpoint.is_valid() ? &dL_GTPtunnelEndpoint : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresentExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(uL_GTPtunnelEndpoint);
-               v(dL_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(uL_GTPtunnelEndpoint);
-               v(dL_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               uL_GTPtunnelEndpoint.clear();
-               dL_GTPtunnelEndpoint.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       uL_GTPtunnelEndpoint_t  uL_GTPtunnelEndpoint;
-       dL_GTPtunnelEndpoint_t  dL_GTPtunnelEndpoint;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresent ::= SEQUENCE {
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresentExtIEs} }  OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent : asn::sequence<1, 0, true, 1>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresent";}
-       using parent_t = asn::sequence<1, 0, true, 1>;
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresentExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               iE_Extensions.clear();
-
-       };
-       private:
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeReleased-SgNBRelConf-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeReleased-SgNBRelConf-Item ::= SEQUENCE {
-       e-RAB-ID                                                        E-RAB-ID,
-       en-DC-ResourceConfiguration                     EN-DC-ResourceConfiguration,
-       resource-configuration                          CHOICE {
-               sgNBPDCPpresent                                         E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPpresent,
-               sgNBPDCPnotpresent                                      E-RABs-ToBeReleased-SgNBRelConf-Item-SgNBPDCPnotpresent,
-               ...
-       },
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeReleased-SgNBRelConf-ItemExtIEs} }     OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_SgNBRelConf_Item : asn::sequence<4, 0, true, 1>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBRelConf-Item";}
-       using parent_t = asn::sequence<4, 0, true, 1>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct en_DC_ResourceConfiguration_t : EN_DC_ResourceConfiguration
-       {
-               static constexpr const char* name() {return "en_DC_ResourceConfiguration_t";}
-               using parent_t = EN_DC_ResourceConfiguration;
-
-       };
-       en_DC_ResourceConfiguration_t& ref_en_DC_ResourceConfiguration() {return en_DC_ResourceConfiguration;}
-       en_DC_ResourceConfiguration_t const& ref_en_DC_ResourceConfiguration() const {return en_DC_ResourceConfiguration;}
-       struct resource_configuration_t : asn::choice<2, 0, true>
-       {
-               static constexpr const char* name() {return "resource_configuration_t";}
-               using parent_t = asn::choice<2, 0, true>;
-               index_type get_index() const {return index;}
-               bool is_unknown() const {return index == 3;}
-               void set_unknown() { set_index(3);  }
-               ~resource_configuration_t() {clear();}
-               struct sgNBPDCPpresent_t : E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent
-               {
-                       static constexpr const char* name() {return "sgNBPDCPpresent_t";}
-                       using parent_t = E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPpresent;
-
-               };
-               struct sgNBPDCPnotpresent_t : E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent
-               {
-                       static constexpr const char* name() {return "sgNBPDCPnotpresent_t";}
-                       using parent_t = E_RABs_ToBeReleased_SgNBRelConf_Item_SgNBPDCPnotpresent;
-
-               };
-               void clear()
-               {
-                       switch(get_index())
-                       {
-                       case 1: var.destroy<sgNBPDCPpresent_t>(); break;
-                       case 2: var.destroy<sgNBPDCPnotpresent_t>(); break;
-                       }
-                       index = 0;
-                       base::clear();
-               }
-               template<typename V> bool decode(size_t idx, V& v)
-               {
-                       clear();
-                       switch(idx)
-                       {
-                       case 1: set_index(1); return v(var.build<sgNBPDCPpresent_t>());
-                       case 2: set_index(2); return v(var.build<sgNBPDCPnotpresent_t>());
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       switch(get_index())
-                       {
-                       case 1: return v(var.as<sgNBPDCPpresent_t>());
-                       case 2: return v(var.as<sgNBPDCPnotpresent_t>());
-                       }
-                       return false;
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<sgNBPDCPpresent_t>(1);
-                       v.template operator()<sgNBPDCPnotpresent_t>(2);
-
-               }
-               sgNBPDCPpresent_t& select_sgNBPDCPpresent() { if(get_index() != 1) { clear(); set_index(1); return var.build<sgNBPDCPpresent_t>();} return var.as<sgNBPDCPpresent_t>();}
-               sgNBPDCPpresent_t const* get_sgNBPDCPpresent() const { if(get_index() == 1) { return &var.as<sgNBPDCPpresent_t>();} return nullptr; }
-               sgNBPDCPnotpresent_t& select_sgNBPDCPnotpresent() { if(get_index() != 2) { clear(); set_index(2); return var.build<sgNBPDCPnotpresent_t>();} return var.as<sgNBPDCPnotpresent_t>();}
-               sgNBPDCPnotpresent_t const* get_sgNBPDCPnotpresent() const { if(get_index() == 2) { return &var.as<sgNBPDCPnotpresent_t>();} return nullptr; }
-               private:
-               void set_index(index_type i) {index = i; base::set();}
-               union union_type
-               {
-                       char dummy1[sizeof(sgNBPDCPpresent_t)];
-                       char dummy2[sizeof(sgNBPDCPnotpresent_t)];
-
-               };
-               asn::variant<sizeof(union_type)>        var;
-               index_type      index {0};
-       };
-       resource_configuration_t& ref_resource_configuration() {return resource_configuration;}
-       resource_configuration_t const& ref_resource_configuration() const {return resource_configuration;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeReleased_SgNBRelConf_ItemExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(en_DC_ResourceConfiguration);
-               v(resource_configuration);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(en_DC_ResourceConfiguration);
-               v(resource_configuration);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               en_DC_ResourceConfiguration.clear();
-               resource_configuration.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       en_DC_ResourceConfiguration_t   en_DC_ResourceConfiguration;
-       resource_configuration_t        resource_configuration;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeReleased-SgNBRelConf-ItemIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-E-RABs-ToBeReleased-SgNBRelConf-Item            CRITICALITY ignore              TYPE E-RABs-ToBeReleased-SgNBRelConf-Item               PRESENCE mandatory},
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_SgNBRelConf_ItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeReleased_SgNBRelConf_Item() { set(id_E_RABs_ToBeReleased_SgNBRelConf_Item); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_E_RABs_ToBeReleased_SgNBRelConf_Item)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_E_RABs_ToBeReleased_SgNBRelConf_Item);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeReleased_SgNBRelConf_Item() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               E_RABs_ToBeReleased_SgNBRelConf_Item& select_id_E_RABs_ToBeReleased_SgNBRelConf_Item() { return set<E_RABs_ToBeReleased_SgNBRelConf_Item>(1); }
-               E_RABs_ToBeReleased_SgNBRelConf_Item const* get_id_E_RABs_ToBeReleased_SgNBRelConf_Item() const { return get<E_RABs_ToBeReleased_SgNBRelConf_Item>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<E_RABs_ToBeReleased_SgNBRelConf_Item>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<E_RABs_ToBeReleased_SgNBRelConf_Item>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_E_RABs_ToBeReleased_SgNBRelConf_Item()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<E_RABs_ToBeReleased_SgNBRelConf_Item>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(E_RABs_ToBeReleased_SgNBRelConf_Item)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeReleased_SgNBRelConf_Item() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeReleased-SgNBRelConfList ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeReleased-SgNBRelConf-ItemIEs} }
-*/
-
-struct E_RABs_ToBeReleased_SgNBRelConfList_elm : ProtocolIE_Single_Container<E_RABs_ToBeReleased_SgNBRelConf_ItemIEs>
-{
-       static constexpr const char* name() {return "E_RABs_ToBeReleased_SgNBRelConfList_elm";}
-       using parent_t = ProtocolIE_Single_Container<E_RABs_ToBeReleased_SgNBRelConf_ItemIEs>;
-
-};
-struct E_RABs_ToBeReleased_SgNBRelConfList : asn::sequenceof<E_RABs_ToBeReleased_SgNBRelConfList_elm>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBRelConfList";}
-       using parent_t = asn::sequenceof<E_RABs_ToBeReleased_SgNBRelConfList_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxnoofBearers >>;
-
-};
-/*
-E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresent ::= SEQUENCE {
-       uL-GTPtunnelEndpoint                    GTPtunnelEndpoint                                                                                                                                       OPTIONAL,
-       dL-GTPtunnelEndpoint                    GTPtunnelEndpoint                                                                                                                                                               OPTIONAL,
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresentExtIEs} }      OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent : asn::sequence<3, 0, true, 3>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresent";}
-       using parent_t = asn::sequence<3, 0, true, 3>;
-       struct uL_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "uL_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       uL_GTPtunnelEndpoint_t& set_uL_GTPtunnelEndpoint() { uL_GTPtunnelEndpoint.setpresent(true); return uL_GTPtunnelEndpoint;}
-       uL_GTPtunnelEndpoint_t const* get_uL_GTPtunnelEndpoint() const {return uL_GTPtunnelEndpoint.is_valid() ? &uL_GTPtunnelEndpoint : nullptr;}
-       struct dL_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "dL_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-               static constexpr bool optional = true;
-
-       };
-       dL_GTPtunnelEndpoint_t& set_dL_GTPtunnelEndpoint() { dL_GTPtunnelEndpoint.setpresent(true); return dL_GTPtunnelEndpoint;}
-       dL_GTPtunnelEndpoint_t const* get_dL_GTPtunnelEndpoint() const {return dL_GTPtunnelEndpoint.is_valid() ? &dL_GTPtunnelEndpoint : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresentExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(uL_GTPtunnelEndpoint);
-               v(dL_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(uL_GTPtunnelEndpoint);
-               v(dL_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               uL_GTPtunnelEndpoint.clear();
-               dL_GTPtunnelEndpoint.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       uL_GTPtunnelEndpoint_t  uL_GTPtunnelEndpoint;
-       dL_GTPtunnelEndpoint_t  dL_GTPtunnelEndpoint;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresentExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresent ::= SEQUENCE {
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresentExtIEs} }   OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent : asn::sequence<1, 0, true, 1>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresent";}
-       using parent_t = asn::sequence<1, 0, true, 1>;
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresentExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               iE_Extensions.clear();
-
-       };
-       private:
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeReleased-SgNBRelReq-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeReleased-SgNBRelReq-Item ::= SEQUENCE {
-       e-RAB-ID                                                        E-RAB-ID,
-       en-DC-ResourceConfiguration                     EN-DC-ResourceConfiguration,
-       resource-configuration                          CHOICE {
-               sgNBPDCPpresent                                         E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPpresent,
-               sgNBPDCPnotpresent                                      E-RABs-ToBeReleased-SgNBRelReq-Item-SgNBPDCPnotpresent,
-               ...
-       },
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeReleased-SgNBRelReq-ItemExtIEs} }      OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_SgNBRelReq_Item : asn::sequence<4, 0, true, 1>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBRelReq-Item";}
-       using parent_t = asn::sequence<4, 0, true, 1>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct en_DC_ResourceConfiguration_t : EN_DC_ResourceConfiguration
-       {
-               static constexpr const char* name() {return "en_DC_ResourceConfiguration_t";}
-               using parent_t = EN_DC_ResourceConfiguration;
-
-       };
-       en_DC_ResourceConfiguration_t& ref_en_DC_ResourceConfiguration() {return en_DC_ResourceConfiguration;}
-       en_DC_ResourceConfiguration_t const& ref_en_DC_ResourceConfiguration() const {return en_DC_ResourceConfiguration;}
-       struct resource_configuration_t : asn::choice<2, 0, true>
-       {
-               static constexpr const char* name() {return "resource_configuration_t";}
-               using parent_t = asn::choice<2, 0, true>;
-               index_type get_index() const {return index;}
-               bool is_unknown() const {return index == 3;}
-               void set_unknown() { set_index(3);  }
-               ~resource_configuration_t() {clear();}
-               struct sgNBPDCPpresent_t : E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent
-               {
-                       static constexpr const char* name() {return "sgNBPDCPpresent_t";}
-                       using parent_t = E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPpresent;
-
-               };
-               struct sgNBPDCPnotpresent_t : E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent
-               {
-                       static constexpr const char* name() {return "sgNBPDCPnotpresent_t";}
-                       using parent_t = E_RABs_ToBeReleased_SgNBRelReq_Item_SgNBPDCPnotpresent;
-
-               };
-               void clear()
-               {
-                       switch(get_index())
-                       {
-                       case 1: var.destroy<sgNBPDCPpresent_t>(); break;
-                       case 2: var.destroy<sgNBPDCPnotpresent_t>(); break;
-                       }
-                       index = 0;
-                       base::clear();
-               }
-               template<typename V> bool decode(size_t idx, V& v)
-               {
-                       clear();
-                       switch(idx)
-                       {
-                       case 1: set_index(1); return v(var.build<sgNBPDCPpresent_t>());
-                       case 2: set_index(2); return v(var.build<sgNBPDCPnotpresent_t>());
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       switch(get_index())
-                       {
-                       case 1: return v(var.as<sgNBPDCPpresent_t>());
-                       case 2: return v(var.as<sgNBPDCPnotpresent_t>());
-                       }
-                       return false;
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<sgNBPDCPpresent_t>(1);
-                       v.template operator()<sgNBPDCPnotpresent_t>(2);
-
-               }
-               sgNBPDCPpresent_t& select_sgNBPDCPpresent() { if(get_index() != 1) { clear(); set_index(1); return var.build<sgNBPDCPpresent_t>();} return var.as<sgNBPDCPpresent_t>();}
-               sgNBPDCPpresent_t const* get_sgNBPDCPpresent() const { if(get_index() == 1) { return &var.as<sgNBPDCPpresent_t>();} return nullptr; }
-               sgNBPDCPnotpresent_t& select_sgNBPDCPnotpresent() { if(get_index() != 2) { clear(); set_index(2); return var.build<sgNBPDCPnotpresent_t>();} return var.as<sgNBPDCPnotpresent_t>();}
-               sgNBPDCPnotpresent_t const* get_sgNBPDCPnotpresent() const { if(get_index() == 2) { return &var.as<sgNBPDCPnotpresent_t>();} return nullptr; }
-               private:
-               void set_index(index_type i) {index = i; base::set();}
-               union union_type
-               {
-                       char dummy1[sizeof(sgNBPDCPpresent_t)];
-                       char dummy2[sizeof(sgNBPDCPnotpresent_t)];
-
-               };
-               asn::variant<sizeof(union_type)>        var;
-               index_type      index {0};
-       };
-       resource_configuration_t& ref_resource_configuration() {return resource_configuration;}
-       resource_configuration_t const& ref_resource_configuration() const {return resource_configuration;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeReleased_SgNBRelReq_ItemExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(en_DC_ResourceConfiguration);
-               v(resource_configuration);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(en_DC_ResourceConfiguration);
-               v(resource_configuration);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               en_DC_ResourceConfiguration.clear();
-               resource_configuration.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       en_DC_ResourceConfiguration_t   en_DC_ResourceConfiguration;
-       resource_configuration_t        resource_configuration;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeReleased-SgNBRelReq-ItemIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-E-RABs-ToBeReleased-SgNBRelReq-Item             CRITICALITY ignore      TYPE E-RABs-ToBeReleased-SgNBRelReq-Item                PRESENCE mandatory},
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_SgNBRelReq_ItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeReleased_SgNBRelReq_Item() { set(id_E_RABs_ToBeReleased_SgNBRelReq_Item); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_E_RABs_ToBeReleased_SgNBRelReq_Item)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_E_RABs_ToBeReleased_SgNBRelReq_Item);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeReleased_SgNBRelReq_Item() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               E_RABs_ToBeReleased_SgNBRelReq_Item& select_id_E_RABs_ToBeReleased_SgNBRelReq_Item() { return set<E_RABs_ToBeReleased_SgNBRelReq_Item>(1); }
-               E_RABs_ToBeReleased_SgNBRelReq_Item const* get_id_E_RABs_ToBeReleased_SgNBRelReq_Item() const { return get<E_RABs_ToBeReleased_SgNBRelReq_Item>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<E_RABs_ToBeReleased_SgNBRelReq_Item>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<E_RABs_ToBeReleased_SgNBRelReq_Item>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_E_RABs_ToBeReleased_SgNBRelReq_Item()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<E_RABs_ToBeReleased_SgNBRelReq_Item>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(E_RABs_ToBeReleased_SgNBRelReq_Item)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeReleased_SgNBRelReq_Item() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeReleased-SgNBRelReqList ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeReleased-SgNBRelReq-ItemIEs} }
-*/
-
-struct E_RABs_ToBeReleased_SgNBRelReqList_elm : ProtocolIE_Single_Container<E_RABs_ToBeReleased_SgNBRelReq_ItemIEs>
-{
-       static constexpr const char* name() {return "E_RABs_ToBeReleased_SgNBRelReqList_elm";}
-       using parent_t = ProtocolIE_Single_Container<E_RABs_ToBeReleased_SgNBRelReq_ItemIEs>;
-
-};
-struct E_RABs_ToBeReleased_SgNBRelReqList : asn::sequenceof<E_RABs_ToBeReleased_SgNBRelReqList_elm>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBRelReqList";}
-       using parent_t = asn::sequenceof<E_RABs_ToBeReleased_SgNBRelReqList_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxnoofBearers >>;
-
-};
-/*
-E-RABs-ToBeReleased-SgNBRelReqd-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeReleased-SgNBRelReqd-Item ::= SEQUENCE {
-       e-RAB-ID                                                        E-RAB-ID,
-       rlc-Mode-transferred                    RLCMode,
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeReleased-SgNBRelReqd-ItemExtIEs} }     OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_SgNBRelReqd_Item : asn::sequence<3, 0, true, 1>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBRelReqd-Item";}
-       using parent_t = asn::sequence<3, 0, true, 1>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct rlc_Mode_transferred_t : RLCMode
-       {
-               static constexpr const char* name() {return "rlc_Mode_transferred_t";}
-               using parent_t = RLCMode;
-
-       };
-       rlc_Mode_transferred_t& ref_rlc_Mode_transferred() {return rlc_Mode_transferred;}
-       rlc_Mode_transferred_t const& ref_rlc_Mode_transferred() const {return rlc_Mode_transferred;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeReleased_SgNBRelReqd_ItemExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(rlc_Mode_transferred);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(rlc_Mode_transferred);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               rlc_Mode_transferred.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       rlc_Mode_transferred_t  rlc_Mode_transferred;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeReleased-SgNBRelReqd-ItemIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-E-RABs-ToBeReleased-SgNBRelReqd-Item            CRITICALITY ignore      TYPE E-RABs-ToBeReleased-SgNBRelReqd-Item               PRESENCE mandatory},
-       ...
-}
-*/
-
-struct E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeReleased_SgNBRelReqd_Item() { set(id_E_RABs_ToBeReleased_SgNBRelReqd_Item); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_E_RABs_ToBeReleased_SgNBRelReqd_Item)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_E_RABs_ToBeReleased_SgNBRelReqd_Item);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeReleased_SgNBRelReqd_Item() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               E_RABs_ToBeReleased_SgNBRelReqd_Item& select_id_E_RABs_ToBeReleased_SgNBRelReqd_Item() { return set<E_RABs_ToBeReleased_SgNBRelReqd_Item>(1); }
-               E_RABs_ToBeReleased_SgNBRelReqd_Item const* get_id_E_RABs_ToBeReleased_SgNBRelReqd_Item() const { return get<E_RABs_ToBeReleased_SgNBRelReqd_Item>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<E_RABs_ToBeReleased_SgNBRelReqd_Item>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<E_RABs_ToBeReleased_SgNBRelReqd_Item>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_E_RABs_ToBeReleased_SgNBRelReqd_Item()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<E_RABs_ToBeReleased_SgNBRelReqd_Item>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(E_RABs_ToBeReleased_SgNBRelReqd_Item)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeReleased_SgNBRelReqd_Item() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeReleased-SgNBRelReqdList ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeReleased-SgNBRelReqd-ItemIEs} }
-*/
-
-struct E_RABs_ToBeReleased_SgNBRelReqdList_elm : ProtocolIE_Single_Container<E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs>
-{
-       static constexpr const char* name() {return "E_RABs_ToBeReleased_SgNBRelReqdList_elm";}
-       using parent_t = ProtocolIE_Single_Container<E_RABs_ToBeReleased_SgNBRelReqd_ItemIEs>;
-
-};
-struct E_RABs_ToBeReleased_SgNBRelReqdList : asn::sequenceof<E_RABs_ToBeReleased_SgNBRelReqdList_elm>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeReleased-SgNBRelReqdList";}
-       using parent_t = asn::sequenceof<E_RABs_ToBeReleased_SgNBRelReqdList_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxnoofBearers >>;
-
-};
-/*
-E-RABs-ToBeSetup-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       { ID id-BearerType              CRITICALITY reject      EXTENSION BearerType            PRESENCE optional},
-       ...
-}
-*/
-
-struct E_RABs_ToBeSetup_ItemExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_BearerType() { set(id_BearerType); type=1;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_BearerType)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_BearerType);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_BearerType() { set(reject); type=1;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               BearerType& select_id_BearerType() { return set<BearerType>(1); }
-               BearerType const* get_id_BearerType() const { return get<BearerType>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<BearerType>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<BearerType>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_BearerType()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<BearerType>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(BearerType)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_BearerType() { set(optional); type=1;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(optional)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeSetup-Item ::= SEQUENCE {
-       e-RAB-ID                                        E-RAB-ID,
-       e-RAB-Level-QoS-Parameters              E-RAB-Level-QoS-Parameters,
-       dL-Forwarding                                   DL-Forwarding                                                                                                   OPTIONAL,
-       uL-GTPtunnelEndpoint                    GTPtunnelEndpoint,
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeSetup-ItemExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeSetup_Item : asn::sequence<5, 0, true, 2>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeSetup-Item";}
-       using parent_t = asn::sequence<5, 0, true, 2>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct e_RAB_Level_QoS_Parameters_t : E_RAB_Level_QoS_Parameters
-       {
-               static constexpr const char* name() {return "e_RAB_Level_QoS_Parameters_t";}
-               using parent_t = E_RAB_Level_QoS_Parameters;
-
-       };
-       e_RAB_Level_QoS_Parameters_t& ref_e_RAB_Level_QoS_Parameters() {return e_RAB_Level_QoS_Parameters;}
-       e_RAB_Level_QoS_Parameters_t const& ref_e_RAB_Level_QoS_Parameters() const {return e_RAB_Level_QoS_Parameters;}
-       struct dL_Forwarding_t : DL_Forwarding
-       {
-               static constexpr const char* name() {return "dL_Forwarding_t";}
-               using parent_t = DL_Forwarding;
-               static constexpr bool optional = true;
-
-       };
-       dL_Forwarding_t& set_dL_Forwarding() { dL_Forwarding.setpresent(true); return dL_Forwarding;}
-       dL_Forwarding_t const* get_dL_Forwarding() const {return dL_Forwarding.is_valid() ? &dL_Forwarding : nullptr;}
-       struct uL_GTPtunnelEndpoint_t : GTPtunnelEndpoint
-       {
-               static constexpr const char* name() {return "uL_GTPtunnelEndpoint_t";}
-               using parent_t = GTPtunnelEndpoint;
-
-       };
-       uL_GTPtunnelEndpoint_t& ref_uL_GTPtunnelEndpoint() {return uL_GTPtunnelEndpoint;}
-       uL_GTPtunnelEndpoint_t const& ref_uL_GTPtunnelEndpoint() const {return uL_GTPtunnelEndpoint;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeSetup_ItemExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeSetup_ItemExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(e_RAB_Level_QoS_Parameters);
-               v(dL_Forwarding);
-               v(uL_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(e_RAB_Level_QoS_Parameters);
-               v(dL_Forwarding);
-               v(uL_GTPtunnelEndpoint);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               e_RAB_Level_QoS_Parameters.clear();
-               dL_Forwarding.clear();
-               uL_GTPtunnelEndpoint.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       e_RAB_Level_QoS_Parameters_t    e_RAB_Level_QoS_Parameters;
-       dL_Forwarding_t dL_Forwarding;
-       uL_GTPtunnelEndpoint_t  uL_GTPtunnelEndpoint;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeSetup-ItemIEs       X2AP-PROTOCOL-IES ::= {
-       { ID id-E-RABs-ToBeSetup-Item    CRITICALITY ignore     TYPE E-RABs-ToBeSetup-Item      PRESENCE mandatory },
-       ...
-}
-*/
-
-struct E_RABs_ToBeSetup_ItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeSetup_Item() { set(id_E_RABs_ToBeSetup_Item); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_E_RABs_ToBeSetup_Item)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_E_RABs_ToBeSetup_Item);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeSetup_Item() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               E_RABs_ToBeSetup_Item& select_id_E_RABs_ToBeSetup_Item() { return set<E_RABs_ToBeSetup_Item>(1); }
-               E_RABs_ToBeSetup_Item const* get_id_E_RABs_ToBeSetup_Item() const { return get<E_RABs_ToBeSetup_Item>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<E_RABs_ToBeSetup_Item>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<E_RABs_ToBeSetup_Item>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_E_RABs_ToBeSetup_Item()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<E_RABs_ToBeSetup_Item>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(E_RABs_ToBeSetup_Item)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeSetup_Item() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeSetup-List ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeSetup-ItemIEs} }
-*/
-
-struct E_RABs_ToBeSetup_List_elm : ProtocolIE_Single_Container<E_RABs_ToBeSetup_ItemIEs>
-{
-       static constexpr const char* name() {return "E_RABs_ToBeSetup_List_elm";}
-       using parent_t = ProtocolIE_Single_Container<E_RABs_ToBeSetup_ItemIEs>;
-
-};
-struct E_RABs_ToBeSetup_List : asn::sequenceof<E_RABs_ToBeSetup_List_elm>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeSetup-List";}
-       using parent_t = asn::sequenceof<E_RABs_ToBeSetup_List_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxnoofBearers >>;
-
-};
-/*
-E-RABs-ToBeSetupRetrieve-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       { ID id-uL-GTPtunnelEndpoint            CRITICALITY reject      EXTENSION GTPtunnelEndpoint             PRESENCE mandatory}|
-       { ID id-dL-Forwarding           CRITICALITY ignore      EXTENSION DL-Forwarding         PRESENCE optional },
-       ...
-}
-*/
-
-struct E_RABs_ToBeSetupRetrieve_ItemExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_uL_GTPtunnelEndpoint() { set(id_uL_GTPtunnelEndpoint); type=1;}
-               void select_id_dL_Forwarding() { set(id_dL_Forwarding); type=2;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_uL_GTPtunnelEndpoint)) { type = 1; return true; }
-                       else if(equal(id_dL_Forwarding)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_uL_GTPtunnelEndpoint);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_dL_Forwarding);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_uL_GTPtunnelEndpoint() { set(reject); type=1;}
-               void select_id_dL_Forwarding() { set(ignore); type=2;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               GTPtunnelEndpoint& select_id_uL_GTPtunnelEndpoint() { return set<GTPtunnelEndpoint>(1); }
-               GTPtunnelEndpoint const* get_id_uL_GTPtunnelEndpoint() const { return get<GTPtunnelEndpoint>(1); }
-               DL_Forwarding& select_id_dL_Forwarding() { return set<DL_Forwarding>(2); }
-               DL_Forwarding const* get_id_dL_Forwarding() const { return get<DL_Forwarding>(2); }
-               bool is_unknown() const { return type == 3; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<GTPtunnelEndpoint>(); break;
-                       case 2: var.destroy<DL_Forwarding>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<GTPtunnelEndpoint>(1);
-                       v.template operator()<DL_Forwarding>(2);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_uL_GTPtunnelEndpoint()); return true;
-                       case 2: v(select_id_dL_Forwarding()); return true;
-                       case 3: if(type != 3) {clear(); asn::base::set();} type = 3; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<GTPtunnelEndpoint>()); return true;
-                       case 2: v(var.as<DL_Forwarding>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(DL_Forwarding)];
-                       char dummy2[sizeof(GTPtunnelEndpoint)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_uL_GTPtunnelEndpoint() { set(mandatory); type=1;}
-               void select_id_dL_Forwarding() { set(optional); type=2;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeSetupRetrieve-Item ::= SEQUENCE {
-       e-RAB-ID                                                E-RAB-ID,
-       e-RAB-Level-QoS-Parameters              E-RAB-Level-QoS-Parameters,
-       bearerType                                              BearerType      OPTIONAL,
-       iE-Extensions                                   ProtocolExtensionContainer { {E-RABs-ToBeSetupRetrieve-ItemExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct E_RABs_ToBeSetupRetrieve_Item : asn::sequence<4, 0, true, 2>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeSetupRetrieve-Item";}
-       using parent_t = asn::sequence<4, 0, true, 2>;
-       struct e_RAB_ID_t : E_RAB_ID
-       {
-               static constexpr const char* name() {return "e_RAB_ID_t";}
-               using parent_t = E_RAB_ID;
-
-       };
-       e_RAB_ID_t& ref_e_RAB_ID() {return e_RAB_ID;}
-       e_RAB_ID_t const& ref_e_RAB_ID() const {return e_RAB_ID;}
-       struct e_RAB_Level_QoS_Parameters_t : E_RAB_Level_QoS_Parameters
-       {
-               static constexpr const char* name() {return "e_RAB_Level_QoS_Parameters_t";}
-               using parent_t = E_RAB_Level_QoS_Parameters;
-
-       };
-       e_RAB_Level_QoS_Parameters_t& ref_e_RAB_Level_QoS_Parameters() {return e_RAB_Level_QoS_Parameters;}
-       e_RAB_Level_QoS_Parameters_t const& ref_e_RAB_Level_QoS_Parameters() const {return e_RAB_Level_QoS_Parameters;}
-       struct bearerType_t : BearerType
-       {
-               static constexpr const char* name() {return "bearerType_t";}
-               using parent_t = BearerType;
-               static constexpr bool optional = true;
-
-       };
-       bearerType_t& set_bearerType() { bearerType.setpresent(true); return bearerType;}
-       bearerType_t const* get_bearerType() const {return bearerType.is_valid() ? &bearerType : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<E_RABs_ToBeSetupRetrieve_ItemExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<E_RABs_ToBeSetupRetrieve_ItemExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(e_RAB_ID);
-               v(e_RAB_Level_QoS_Parameters);
-               v(bearerType);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(e_RAB_ID);
-               v(e_RAB_Level_QoS_Parameters);
-               v(bearerType);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               e_RAB_ID.clear();
-               e_RAB_Level_QoS_Parameters.clear();
-               bearerType.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       e_RAB_ID_t      e_RAB_ID;
-       e_RAB_Level_QoS_Parameters_t    e_RAB_Level_QoS_Parameters;
-       bearerType_t    bearerType;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-E-RABs-ToBeSetupRetrieve-ItemIEs       X2AP-PROTOCOL-IES ::= {
-       { ID id-E-RABs-ToBeSetupRetrieve-Item   CRITICALITY ignore      TYPE E-RABs-ToBeSetupRetrieve-Item      PRESENCE mandatory},
-       ...
-}
-*/
-
-struct E_RABs_ToBeSetupRetrieve_ItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeSetupRetrieve_Item() { set(id_E_RABs_ToBeSetupRetrieve_Item); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_E_RABs_ToBeSetupRetrieve_Item)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_E_RABs_ToBeSetupRetrieve_Item);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeSetupRetrieve_Item() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               E_RABs_ToBeSetupRetrieve_Item& select_id_E_RABs_ToBeSetupRetrieve_Item() { return set<E_RABs_ToBeSetupRetrieve_Item>(1); }
-               E_RABs_ToBeSetupRetrieve_Item const* get_id_E_RABs_ToBeSetupRetrieve_Item() const { return get<E_RABs_ToBeSetupRetrieve_Item>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<E_RABs_ToBeSetupRetrieve_Item>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<E_RABs_ToBeSetupRetrieve_Item>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_E_RABs_ToBeSetupRetrieve_Item()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<E_RABs_ToBeSetupRetrieve_Item>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(E_RABs_ToBeSetupRetrieve_Item)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_E_RABs_ToBeSetupRetrieve_Item() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-E-RABs-ToBeSetup-ListRetrieve ::= SEQUENCE (SIZE(1..maxnoofBearers)) OF ProtocolIE-Single-Container { {E-RABs-ToBeSetupRetrieve-ItemIEs} }
-*/
-
-struct E_RABs_ToBeSetup_ListRetrieve_elm : ProtocolIE_Single_Container<E_RABs_ToBeSetupRetrieve_ItemIEs>
-{
-       static constexpr const char* name() {return "E_RABs_ToBeSetup_ListRetrieve_elm";}
-       using parent_t = ProtocolIE_Single_Container<E_RABs_ToBeSetupRetrieve_ItemIEs>;
-
-};
-struct E_RABs_ToBeSetup_ListRetrieve : asn::sequenceof<E_RABs_ToBeSetup_ListRetrieve_elm>
-{
-       static constexpr const char* name() {return "E-RABs-ToBeSetup-ListRetrieve";}
-       using parent_t = asn::sequenceof<E_RABs_ToBeSetup_ListRetrieve_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxnoofBearers >>;
-
-};
-/*
-ENB-ENDCConfigUpdateAckIEs X2AP-PROTOCOL-IES ::= {
-       ...
-}
-*/
-
-struct ENB_ENDCConfigUpdateAckIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-FDD-InfoNeighbourServedNRCell-Information-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct FDD_InfoNeighbourServedNRCell_Information_ExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-FDD-InfoNeighbourServedNRCell-Information ::= SEQUENCE {
-       ul-NRFreqInfo                   NRFreqInfo,
-       dl-NRFreqInfo                   NRFreqInfo,
-       iE-Extensions                   ProtocolExtensionContainer { {FDD-InfoNeighbourServedNRCell-Information-ExtIEs} }               OPTIONAL,
-       ...
-}
-*/
-
-struct FDD_InfoNeighbourServedNRCell_Information : asn::sequence<3, 0, true, 1>
-{
-       static constexpr const char* name() {return "FDD-InfoNeighbourServedNRCell-Information";}
-       using parent_t = asn::sequence<3, 0, true, 1>;
-       struct ul_NRFreqInfo_t : NRFreqInfo
-       {
-               static constexpr const char* name() {return "ul_NRFreqInfo_t";}
-               using parent_t = NRFreqInfo;
-
-       };
-       ul_NRFreqInfo_t& ref_ul_NRFreqInfo() {return ul_NRFreqInfo;}
-       ul_NRFreqInfo_t const& ref_ul_NRFreqInfo() const {return ul_NRFreqInfo;}
-       struct dl_NRFreqInfo_t : NRFreqInfo
-       {
-               static constexpr const char* name() {return "dl_NRFreqInfo_t";}
-               using parent_t = NRFreqInfo;
-
-       };
-       dl_NRFreqInfo_t& ref_dl_NRFreqInfo() {return dl_NRFreqInfo;}
-       dl_NRFreqInfo_t const& ref_dl_NRFreqInfo() const {return dl_NRFreqInfo;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<FDD_InfoNeighbourServedNRCell_Information_ExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<FDD_InfoNeighbourServedNRCell_Information_ExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(ul_NRFreqInfo);
-               v(dl_NRFreqInfo);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(ul_NRFreqInfo);
-               v(dl_NRFreqInfo);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               ul_NRFreqInfo.clear();
-               dl_NRFreqInfo.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       ul_NRFreqInfo_t ul_NRFreqInfo;
-       dl_NRFreqInfo_t dl_NRFreqInfo;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-TDD-InfoNeighbourServedNRCell-Information-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct TDD_InfoNeighbourServedNRCell_Information_ExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-TDD-InfoNeighbourServedNRCell-Information ::= SEQUENCE {
-       nRFreqInfo                              NRFreqInfo,
-       iE-Extensions                   ProtocolExtensionContainer { {TDD-InfoNeighbourServedNRCell-Information-ExtIEs} }               OPTIONAL,
-       ...
-}
-*/
-
-struct TDD_InfoNeighbourServedNRCell_Information : asn::sequence<2, 0, true, 1>
-{
-       static constexpr const char* name() {return "TDD-InfoNeighbourServedNRCell-Information";}
-       using parent_t = asn::sequence<2, 0, true, 1>;
-       struct nRFreqInfo_t : NRFreqInfo
-       {
-               static constexpr const char* name() {return "nRFreqInfo_t";}
-               using parent_t = NRFreqInfo;
-
-       };
-       nRFreqInfo_t& ref_nRFreqInfo() {return nRFreqInfo;}
-       nRFreqInfo_t const& ref_nRFreqInfo() const {return nRFreqInfo;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<TDD_InfoNeighbourServedNRCell_Information_ExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<TDD_InfoNeighbourServedNRCell_Information_ExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(nRFreqInfo);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(nRFreqInfo);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               nRFreqInfo.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       nRFreqInfo_t    nRFreqInfo;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-NRNeighbour-Information-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct NRNeighbour_Information_ExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-NRNeighbour-Information ::= SEQUENCE (SIZE (1.. maxofNRNeighbours))OF SEQUENCE {
-       nrpCI                           NRPCI,
-       nrCellID                                NRCGI,
-       fiveGS-TAC                      FiveGS-TAC      OPTIONAL,
-       configured-TAC          TAC                     OPTIONAL,
-       measurementTimingConfiguration  OCTET STRING,
-       nRNeighbourModeInfo                     CHOICE {
-               fdd             FDD-InfoNeighbourServedNRCell-Information,
-               tdd             TDD-InfoNeighbourServedNRCell-Information,
-               ...
-       },
-       iE-Extensions                                           ProtocolExtensionContainer { {NRNeighbour-Information-ExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct NRNeighbour_Information_elm : asn::sequence<7, 0, true, 3>
-{
-       static constexpr const char* name() {return "NRNeighbour_Information_elm";}
-       using parent_t = asn::sequence<7, 0, true, 3>;
-       struct nrpCI_t : NRPCI
-       {
-               static constexpr const char* name() {return "nrpCI_t";}
-               using parent_t = NRPCI;
-
-       };
-       nrpCI_t& ref_nrpCI() {return nrpCI;}
-       nrpCI_t const& ref_nrpCI() const {return nrpCI;}
-       struct nrCellID_t : NRCGI
-       {
-               static constexpr const char* name() {return "nrCellID_t";}
-               using parent_t = NRCGI;
-
-       };
-       nrCellID_t& ref_nrCellID() {return nrCellID;}
-       nrCellID_t const& ref_nrCellID() const {return nrCellID;}
-       struct fiveGS_TAC_t : FiveGS_TAC
-       {
-               static constexpr const char* name() {return "fiveGS_TAC_t";}
-               using parent_t = FiveGS_TAC;
-               static constexpr bool optional = true;
-
-       };
-       fiveGS_TAC_t& set_fiveGS_TAC() { fiveGS_TAC.setpresent(true); return fiveGS_TAC;}
-       fiveGS_TAC_t const* get_fiveGS_TAC() const {return fiveGS_TAC.is_valid() ? &fiveGS_TAC : nullptr;}
-       struct configured_TAC_t : TAC
-       {
-               static constexpr const char* name() {return "configured_TAC_t";}
-               using parent_t = TAC;
-               static constexpr bool optional = true;
-
-       };
-       configured_TAC_t& set_configured_TAC() { configured_TAC.setpresent(true); return configured_TAC;}
-       configured_TAC_t const* get_configured_TAC() const {return configured_TAC.is_valid() ? &configured_TAC : nullptr;}
-       struct measurementTimingConfiguration_t : asn::ostring<>
-       {
-               static constexpr const char* name() {return "measurementTimingConfiguration_t";}
-               using parent_t = asn::ostring<>;
-
-       };
-
-       measurementTimingConfiguration_t& ref_measurementTimingConfiguration() {return measurementTimingConfiguration;}
-       measurementTimingConfiguration_t const& ref_measurementTimingConfiguration() const {return measurementTimingConfiguration;}
-       struct nRNeighbourModeInfo_t : asn::choice<2, 0, true>
-       {
-               static constexpr const char* name() {return "nRNeighbourModeInfo_t";}
-               using parent_t = asn::choice<2, 0, true>;
-               index_type get_index() const {return index;}
-               bool is_unknown() const {return index == 3;}
-               void set_unknown() { set_index(3);  }
-               ~nRNeighbourModeInfo_t() {clear();}
-               struct fdd_t : FDD_InfoNeighbourServedNRCell_Information
-               {
-                       static constexpr const char* name() {return "fdd_t";}
-                       using parent_t = FDD_InfoNeighbourServedNRCell_Information;
-
-               };
-               struct tdd_t : TDD_InfoNeighbourServedNRCell_Information
-               {
-                       static constexpr const char* name() {return "tdd_t";}
-                       using parent_t = TDD_InfoNeighbourServedNRCell_Information;
-
-               };
-               void clear()
-               {
-                       switch(get_index())
-                       {
-                       case 1: var.destroy<fdd_t>(); break;
-                       case 2: var.destroy<tdd_t>(); break;
-                       }
-                       index = 0;
-                       base::clear();
-               }
-               template<typename V> bool decode(size_t idx, V& v)
-               {
-                       clear();
-                       switch(idx)
-                       {
-                       case 1: set_index(1); return v(var.build<fdd_t>());
-                       case 2: set_index(2); return v(var.build<tdd_t>());
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       switch(get_index())
-                       {
-                       case 1: return v(var.as<fdd_t>());
-                       case 2: return v(var.as<tdd_t>());
-                       }
-                       return false;
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<fdd_t>(1);
-                       v.template operator()<tdd_t>(2);
-
-               }
-               fdd_t& select_fdd() { if(get_index() != 1) { clear(); set_index(1); return var.build<fdd_t>();} return var.as<fdd_t>();}
-               fdd_t const* get_fdd() const { if(get_index() == 1) { return &var.as<fdd_t>();} return nullptr; }
-               tdd_t& select_tdd() { if(get_index() != 2) { clear(); set_index(2); return var.build<tdd_t>();} return var.as<tdd_t>();}
-               tdd_t const* get_tdd() const { if(get_index() == 2) { return &var.as<tdd_t>();} return nullptr; }
-               private:
-               void set_index(index_type i) {index = i; base::set();}
-               union union_type
-               {
-                       char dummy1[sizeof(fdd_t)];
-                       char dummy2[sizeof(tdd_t)];
-
-               };
-               asn::variant<sizeof(union_type)>        var;
-               index_type      index {0};
-       };
-       nRNeighbourModeInfo_t& ref_nRNeighbourModeInfo() {return nRNeighbourModeInfo;}
-       nRNeighbourModeInfo_t const& ref_nRNeighbourModeInfo() const {return nRNeighbourModeInfo;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<NRNeighbour_Information_ExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<NRNeighbour_Information_ExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(nrpCI);
-               v(nrCellID);
-               v(fiveGS_TAC);
-               v(configured_TAC);
-               v(measurementTimingConfiguration);
-               v(nRNeighbourModeInfo);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(nrpCI);
-               v(nrCellID);
-               v(fiveGS_TAC);
-               v(configured_TAC);
-               v(measurementTimingConfiguration);
-               v(nRNeighbourModeInfo);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               nrpCI.clear();
-               nrCellID.clear();
-               fiveGS_TAC.clear();
-               configured_TAC.clear();
-               measurementTimingConfiguration.clear();
-               nRNeighbourModeInfo.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       nrpCI_t nrpCI;
-       nrCellID_t      nrCellID;
-       fiveGS_TAC_t    fiveGS_TAC;
-       configured_TAC_t        configured_TAC;
-       measurementTimingConfiguration_t        measurementTimingConfiguration;
-       nRNeighbourModeInfo_t   nRNeighbourModeInfo;
-       iE_Extensions_t iE_Extensions;
-
-};
-struct NRNeighbour_Information : asn::sequenceof<NRNeighbour_Information_elm>
-{
-       static constexpr const char* name() {return "NRNeighbour-Information";}
-       using parent_t = asn::sequenceof<NRNeighbour_Information_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxofNRNeighbours >>;
-
-};
-/*
-ServedEUTRAcellsENDCX2Management-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct ServedEUTRAcellsENDCX2Management_ExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ServedEUTRAcellsENDCX2ManagementList ::= SEQUENCE (SIZE (1.. maxCellineNB)) OF SEQUENCE {
-       servedEUTRACellInfo                                     ServedCell-Information,
-       nrNeighbourInfo                                         NRNeighbour-Information         OPTIONAL,
-       iE-Extensions                                           ProtocolExtensionContainer { {ServedEUTRAcellsENDCX2Management-ExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct ServedEUTRAcellsENDCX2ManagementList_elm : asn::sequence<3, 0, true, 2>
-{
-       static constexpr const char* name() {return "ServedEUTRAcellsENDCX2ManagementList_elm";}
-       using parent_t = asn::sequence<3, 0, true, 2>;
-       struct servedEUTRACellInfo_t : ServedCell_Information
-       {
-               static constexpr const char* name() {return "servedEUTRACellInfo_t";}
-               using parent_t = ServedCell_Information;
-
-       };
-       servedEUTRACellInfo_t& ref_servedEUTRACellInfo() {return servedEUTRACellInfo;}
-       servedEUTRACellInfo_t const& ref_servedEUTRACellInfo() const {return servedEUTRACellInfo;}
-       struct nrNeighbourInfo_t : NRNeighbour_Information
-       {
-               static constexpr const char* name() {return "nrNeighbourInfo_t";}
-               using parent_t = NRNeighbour_Information;
-               static constexpr bool optional = true;
-
-       };
-       nrNeighbourInfo_t& set_nrNeighbourInfo() { nrNeighbourInfo.setpresent(true); return nrNeighbourInfo;}
-       nrNeighbourInfo_t const* get_nrNeighbourInfo() const {return nrNeighbourInfo.is_valid() ? &nrNeighbourInfo : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<ServedEUTRAcellsENDCX2Management_ExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<ServedEUTRAcellsENDCX2Management_ExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(servedEUTRACellInfo);
-               v(nrNeighbourInfo);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(servedEUTRACellInfo);
-               v(nrNeighbourInfo);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               servedEUTRACellInfo.clear();
-               nrNeighbourInfo.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       servedEUTRACellInfo_t   servedEUTRACellInfo;
-       nrNeighbourInfo_t       nrNeighbourInfo;
-       iE_Extensions_t iE_Extensions;
-
-};
-struct ServedEUTRAcellsENDCX2ManagementList : asn::sequenceof<ServedEUTRAcellsENDCX2ManagementList_elm>
-{
-       static constexpr const char* name() {return "ServedEUTRAcellsENDCX2ManagementList";}
-       using parent_t = asn::sequenceof<ServedEUTRAcellsENDCX2ManagementList_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxCellineNB >>;
-
-};
-/*
-ServedEUTRAcellsToModifyListENDCConfUpd-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ServedEUTRAcellsToModifyListENDCConfUpd ::= SEQUENCE (SIZE (1.. maxCellineNB)) OF SEQUENCE {
-       old-ECGI                                                                ECGI,
-       servedEUTRACellInfo                                     ServedCell-Information,
-       nrNeighbourInfo                                         NRNeighbour-Information         OPTIONAL,
-       iE-Extensions                                           ProtocolExtensionContainer { {ServedEUTRAcellsToModifyListENDCConfUpd-ExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct ServedEUTRAcellsToModifyListENDCConfUpd_elm : asn::sequence<4, 0, true, 2>
-{
-       static constexpr const char* name() {return "ServedEUTRAcellsToModifyListENDCConfUpd_elm";}
-       using parent_t = asn::sequence<4, 0, true, 2>;
-       struct old_ECGI_t : ECGI
-       {
-               static constexpr const char* name() {return "old_ECGI_t";}
-               using parent_t = ECGI;
-
-       };
-       old_ECGI_t& ref_old_ECGI() {return old_ECGI;}
-       old_ECGI_t const& ref_old_ECGI() const {return old_ECGI;}
-       struct servedEUTRACellInfo_t : ServedCell_Information
-       {
-               static constexpr const char* name() {return "servedEUTRACellInfo_t";}
-               using parent_t = ServedCell_Information;
-
-       };
-       servedEUTRACellInfo_t& ref_servedEUTRACellInfo() {return servedEUTRACellInfo;}
-       servedEUTRACellInfo_t const& ref_servedEUTRACellInfo() const {return servedEUTRACellInfo;}
-       struct nrNeighbourInfo_t : NRNeighbour_Information
-       {
-               static constexpr const char* name() {return "nrNeighbourInfo_t";}
-               using parent_t = NRNeighbour_Information;
-               static constexpr bool optional = true;
-
-       };
-       nrNeighbourInfo_t& set_nrNeighbourInfo() { nrNeighbourInfo.setpresent(true); return nrNeighbourInfo;}
-       nrNeighbourInfo_t const* get_nrNeighbourInfo() const {return nrNeighbourInfo.is_valid() ? &nrNeighbourInfo : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(old_ECGI);
-               v(servedEUTRACellInfo);
-               v(nrNeighbourInfo);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(old_ECGI);
-               v(servedEUTRACellInfo);
-               v(nrNeighbourInfo);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               old_ECGI.clear();
-               servedEUTRACellInfo.clear();
-               nrNeighbourInfo.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       old_ECGI_t      old_ECGI;
-       servedEUTRACellInfo_t   servedEUTRACellInfo;
-       nrNeighbourInfo_t       nrNeighbourInfo;
-       iE_Extensions_t iE_Extensions;
-
-};
-struct ServedEUTRAcellsToModifyListENDCConfUpd : asn::sequenceof<ServedEUTRAcellsToModifyListENDCConfUpd_elm>
-{
-       static constexpr const char* name() {return "ServedEUTRAcellsToModifyListENDCConfUpd";}
-       using parent_t = asn::sequenceof<ServedEUTRAcellsToModifyListENDCConfUpd_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxCellineNB >>;
-
-};
-/*
-ServedEUTRAcellsToDeleteListENDCConfUpd ::= SEQUENCE (SIZE (1..maxCellineNB)) OF ECGI
-*/
-
-struct ServedEUTRAcellsToDeleteListENDCConfUpd_elm : ECGI
-{
-       static constexpr const char* name() {return "ServedEUTRAcellsToDeleteListENDCConfUpd_elm";}
-       using parent_t = ECGI;
-
-};
-struct ServedEUTRAcellsToDeleteListENDCConfUpd : asn::sequenceof<ServedEUTRAcellsToDeleteListENDCConfUpd_elm>
-{
-       static constexpr const char* name() {return "ServedEUTRAcellsToDeleteListENDCConfUpd";}
-       using parent_t = asn::sequenceof<ServedEUTRAcellsToDeleteListENDCConfUpd_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxCellineNB >>;
-
-};
-/*
-ENB-ENDCConfigUpdateIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-CellAssistanceInformation                               CRITICALITY reject      TYPE CellAssistanceInformation                                                  PRESENCE optional }|
-       { ID id-ServedEUTRAcellsENDCX2ManagementList            CRITICALITY reject      TYPE ServedEUTRAcellsENDCX2ManagementList                       PRESENCE optional }|
-       { ID id-ServedEUTRAcellsToModifyListENDCConfUpd CRITICALITY reject      TYPE ServedEUTRAcellsToModifyListENDCConfUpd            PRESENCE optional }|
-       { ID id-ServedEUTRAcellsToDeleteListENDCConfUpd CRITICALITY reject      TYPE ServedEUTRAcellsToDeleteListENDCConfUpd            PRESENCE optional },
-       ...
-}
-*/
-
-struct ENB_ENDCConfigUpdateIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 5; }
-               void clear() {type = 0;}
-               void select_id_CellAssistanceInformation() { set(id_CellAssistanceInformation); type=1;}
-               void select_id_ServedEUTRAcellsENDCX2ManagementList() { set(id_ServedEUTRAcellsENDCX2ManagementList); type=2;}
-               void select_id_ServedEUTRAcellsToModifyListENDCConfUpd() { set(id_ServedEUTRAcellsToModifyListENDCConfUpd); type=3;}
-               void select_id_ServedEUTRAcellsToDeleteListENDCConfUpd() { set(id_ServedEUTRAcellsToDeleteListENDCConfUpd); type=4;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_CellAssistanceInformation)) { type = 1; return true; }
-                       else if(equal(id_ServedEUTRAcellsENDCX2ManagementList)) { type = 2; return true; }
-                       else if(equal(id_ServedEUTRAcellsToModifyListENDCConfUpd)) { type = 3; return true; }
-                       else if(equal(id_ServedEUTRAcellsToDeleteListENDCConfUpd)) { type = 4; return true; }
-                       else { type = 5; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_CellAssistanceInformation);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_ServedEUTRAcellsENDCX2ManagementList);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_ServedEUTRAcellsToModifyListENDCConfUpd);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_ServedEUTRAcellsToDeleteListENDCConfUpd);} return false;
-                       case 5: type = 5; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 5; }
-               void clear() {type = 0;}
-               void select_id_CellAssistanceInformation() { set(reject); type=1;}
-               void select_id_ServedEUTRAcellsENDCX2ManagementList() { set(reject); type=2;}
-               void select_id_ServedEUTRAcellsToModifyListENDCConfUpd() { set(reject); type=3;}
-               void select_id_ServedEUTRAcellsToDeleteListENDCConfUpd() { set(reject); type=4;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(reject)) { type = 3; return true; }
-                       else if(equal(reject)) { type = 4; return true; }
-                       else { type = 5; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 5: type = 5; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               CellAssistanceInformation& select_id_CellAssistanceInformation() { return set<CellAssistanceInformation>(1); }
-               CellAssistanceInformation const* get_id_CellAssistanceInformation() const { return get<CellAssistanceInformation>(1); }
-               ServedEUTRAcellsENDCX2ManagementList& select_id_ServedEUTRAcellsENDCX2ManagementList() { return set<ServedEUTRAcellsENDCX2ManagementList>(2); }
-               ServedEUTRAcellsENDCX2ManagementList const* get_id_ServedEUTRAcellsENDCX2ManagementList() const { return get<ServedEUTRAcellsENDCX2ManagementList>(2); }
-               ServedEUTRAcellsToModifyListENDCConfUpd& select_id_ServedEUTRAcellsToModifyListENDCConfUpd() { return set<ServedEUTRAcellsToModifyListENDCConfUpd>(3); }
-               ServedEUTRAcellsToModifyListENDCConfUpd const* get_id_ServedEUTRAcellsToModifyListENDCConfUpd() const { return get<ServedEUTRAcellsToModifyListENDCConfUpd>(3); }
-               ServedEUTRAcellsToDeleteListENDCConfUpd& select_id_ServedEUTRAcellsToDeleteListENDCConfUpd() { return set<ServedEUTRAcellsToDeleteListENDCConfUpd>(4); }
-               ServedEUTRAcellsToDeleteListENDCConfUpd const* get_id_ServedEUTRAcellsToDeleteListENDCConfUpd() const { return get<ServedEUTRAcellsToDeleteListENDCConfUpd>(4); }
-               bool is_unknown() const { return type == 5; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<CellAssistanceInformation>(); break;
-                       case 2: var.destroy<ServedEUTRAcellsENDCX2ManagementList>(); break;
-                       case 3: var.destroy<ServedEUTRAcellsToModifyListENDCConfUpd>(); break;
-                       case 4: var.destroy<ServedEUTRAcellsToDeleteListENDCConfUpd>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<CellAssistanceInformation>(1);
-                       v.template operator()<ServedEUTRAcellsENDCX2ManagementList>(2);
-                       v.template operator()<ServedEUTRAcellsToModifyListENDCConfUpd>(3);
-                       v.template operator()<ServedEUTRAcellsToDeleteListENDCConfUpd>(4);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_CellAssistanceInformation()); return true;
-                       case 2: v(select_id_ServedEUTRAcellsENDCX2ManagementList()); return true;
-                       case 3: v(select_id_ServedEUTRAcellsToModifyListENDCConfUpd()); return true;
-                       case 4: v(select_id_ServedEUTRAcellsToDeleteListENDCConfUpd()); return true;
-                       case 5: if(type != 5) {clear(); asn::base::set();} type = 5; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<CellAssistanceInformation>()); return true;
-                       case 2: v(var.as<ServedEUTRAcellsENDCX2ManagementList>()); return true;
-                       case 3: v(var.as<ServedEUTRAcellsToModifyListENDCConfUpd>()); return true;
-                       case 4: v(var.as<ServedEUTRAcellsToDeleteListENDCConfUpd>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(CellAssistanceInformation)];
-                       char dummy2[sizeof(ServedEUTRAcellsENDCX2ManagementList)];
-                       char dummy3[sizeof(ServedEUTRAcellsToDeleteListENDCConfUpd)];
-                       char dummy4[sizeof(ServedEUTRAcellsToModifyListENDCConfUpd)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 5; }
-               void clear() {type = 0;}
-               void select_id_CellAssistanceInformation() { set(optional); type=1;}
-               void select_id_ServedEUTRAcellsENDCX2ManagementList() { set(optional); type=2;}
-               void select_id_ServedEUTRAcellsToModifyListENDCConfUpd() { set(optional); type=3;}
-               void select_id_ServedEUTRAcellsToDeleteListENDCConfUpd() { set(optional); type=4;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(optional)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else if(equal(optional)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else { type = 5; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ENB-ENDCX2RemovalReqAckIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-GlobalENB-ID                                                            CRITICALITY reject      TYPE GlobalENB-ID                                                                               PRESENCE mandatory},
-       ...
-}
-*/
-
-struct ENB_ENDCX2RemovalReqAckIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_GlobalENB_ID() { set(id_GlobalENB_ID); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_GlobalENB_ID)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_GlobalENB_ID);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_GlobalENB_ID() { set(reject); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               GlobalENB_ID& select_id_GlobalENB_ID() { return set<GlobalENB_ID>(1); }
-               GlobalENB_ID const* get_id_GlobalENB_ID() const { return get<GlobalENB_ID>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<GlobalENB_ID>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<GlobalENB_ID>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_GlobalENB_ID()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<GlobalENB_ID>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(GlobalENB_ID)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_GlobalENB_ID() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ENB-ENDCX2RemovalReqIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-GlobalENB-ID                                                            CRITICALITY reject      TYPE GlobalENB-ID                                                                               PRESENCE mandatory},
-       ...
-}
-*/
-
-struct ENB_ENDCX2RemovalReqIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_GlobalENB_ID() { set(id_GlobalENB_ID); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_GlobalENB_ID)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_GlobalENB_ID);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_GlobalENB_ID() { set(reject); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               GlobalENB_ID& select_id_GlobalENB_ID() { return set<GlobalENB_ID>(1); }
-               GlobalENB_ID const* get_id_GlobalENB_ID() const { return get<GlobalENB_ID>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<GlobalENB_ID>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<GlobalENB_ID>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_GlobalENB_ID()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<GlobalENB_ID>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(GlobalENB_ID)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_GlobalENB_ID() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ENB-ENDCX2SetupReqAckIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-GlobalENB-ID                                                            CRITICALITY reject      TYPE GlobalENB-ID                                                                               PRESENCE mandatory}|
-       { ID id-ServedEUTRAcellsENDCX2ManagementList            CRITICALITY reject      TYPE ServedEUTRAcellsENDCX2ManagementList               PRESENCE mandatory},
-       ...
-}
-*/
-
-struct ENB_ENDCX2SetupReqAckIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_GlobalENB_ID() { set(id_GlobalENB_ID); type=1;}
-               void select_id_ServedEUTRAcellsENDCX2ManagementList() { set(id_ServedEUTRAcellsENDCX2ManagementList); type=2;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_GlobalENB_ID)) { type = 1; return true; }
-                       else if(equal(id_ServedEUTRAcellsENDCX2ManagementList)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_GlobalENB_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_ServedEUTRAcellsENDCX2ManagementList);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_GlobalENB_ID() { set(reject); type=1;}
-               void select_id_ServedEUTRAcellsENDCX2ManagementList() { set(reject); type=2;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               GlobalENB_ID& select_id_GlobalENB_ID() { return set<GlobalENB_ID>(1); }
-               GlobalENB_ID const* get_id_GlobalENB_ID() const { return get<GlobalENB_ID>(1); }
-               ServedEUTRAcellsENDCX2ManagementList& select_id_ServedEUTRAcellsENDCX2ManagementList() { return set<ServedEUTRAcellsENDCX2ManagementList>(2); }
-               ServedEUTRAcellsENDCX2ManagementList const* get_id_ServedEUTRAcellsENDCX2ManagementList() const { return get<ServedEUTRAcellsENDCX2ManagementList>(2); }
-               bool is_unknown() const { return type == 3; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<GlobalENB_ID>(); break;
-                       case 2: var.destroy<ServedEUTRAcellsENDCX2ManagementList>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<GlobalENB_ID>(1);
-                       v.template operator()<ServedEUTRAcellsENDCX2ManagementList>(2);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_GlobalENB_ID()); return true;
-                       case 2: v(select_id_ServedEUTRAcellsENDCX2ManagementList()); return true;
-                       case 3: if(type != 3) {clear(); asn::base::set();} type = 3; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<GlobalENB_ID>()); return true;
-                       case 2: v(var.as<ServedEUTRAcellsENDCX2ManagementList>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(GlobalENB_ID)];
-                       char dummy2[sizeof(ServedEUTRAcellsENDCX2ManagementList)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_GlobalENB_ID() { set(mandatory); type=1;}
-               void select_id_ServedEUTRAcellsENDCX2ManagementList() { set(mandatory); type=2;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ENB-ENDCX2SetupReqIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-GlobalENB-ID                                                            CRITICALITY reject      TYPE GlobalENB-ID                                                                               PRESENCE mandatory}|
-       { ID id-ServedEUTRAcellsENDCX2ManagementList            CRITICALITY reject      TYPE ServedEUTRAcellsENDCX2ManagementList               PRESENCE mandatory},
-       ...
-}
-*/
-
-struct ENB_ENDCX2SetupReqIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_GlobalENB_ID() { set(id_GlobalENB_ID); type=1;}
-               void select_id_ServedEUTRAcellsENDCX2ManagementList() { set(id_ServedEUTRAcellsENDCX2ManagementList); type=2;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_GlobalENB_ID)) { type = 1; return true; }
-                       else if(equal(id_ServedEUTRAcellsENDCX2ManagementList)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_GlobalENB_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_ServedEUTRAcellsENDCX2ManagementList);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_GlobalENB_ID() { set(reject); type=1;}
-               void select_id_ServedEUTRAcellsENDCX2ManagementList() { set(reject); type=2;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               GlobalENB_ID& select_id_GlobalENB_ID() { return set<GlobalENB_ID>(1); }
-               GlobalENB_ID const* get_id_GlobalENB_ID() const { return get<GlobalENB_ID>(1); }
-               ServedEUTRAcellsENDCX2ManagementList& select_id_ServedEUTRAcellsENDCX2ManagementList() { return set<ServedEUTRAcellsENDCX2ManagementList>(2); }
-               ServedEUTRAcellsENDCX2ManagementList const* get_id_ServedEUTRAcellsENDCX2ManagementList() const { return get<ServedEUTRAcellsENDCX2ManagementList>(2); }
-               bool is_unknown() const { return type == 3; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<GlobalENB_ID>(); break;
-                       case 2: var.destroy<ServedEUTRAcellsENDCX2ManagementList>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<GlobalENB_ID>(1);
-                       v.template operator()<ServedEUTRAcellsENDCX2ManagementList>(2);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_GlobalENB_ID()); return true;
-                       case 2: v(select_id_ServedEUTRAcellsENDCX2ManagementList()); return true;
-                       case 3: if(type != 3) {clear(); asn::base::set();} type = 3; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<GlobalENB_ID>()); return true;
-                       case 2: v(var.as<ServedEUTRAcellsENDCX2ManagementList>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(GlobalENB_ID)];
-                       char dummy2[sizeof(ServedEUTRAcellsENDCX2ManagementList)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_GlobalENB_ID() { set(mandatory); type=1;}
-               void select_id_ServedEUTRAcellsENDCX2ManagementList() { set(mandatory); type=2;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ListofEUTRACellsinEUTRACoordinationResp ::= SEQUENCE (SIZE (0..maxCellineNB)) OF ECGI
-*/
-
-struct ListofEUTRACellsinEUTRACoordinationResp_elm : ECGI
-{
-       static constexpr const char* name() {return "ListofEUTRACellsinEUTRACoordinationResp_elm";}
-       using parent_t = ECGI;
-
-};
-struct ListofEUTRACellsinEUTRACoordinationResp : asn::sequenceof<ListofEUTRACellsinEUTRACoordinationResp_elm>
-{
-       static constexpr const char* name() {return "ListofEUTRACellsinEUTRACoordinationResp";}
-       using parent_t = asn::sequenceof<ListofEUTRACellsinEUTRACoordinationResp_elm>;
-       using constraint_t = asn::constraints<false,asn::span<0,  maxCellineNB >>;
-
-};
-/*
-ENB-EUTRA-NRCellResourceCoordinationReqAckIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-DataTrafficResourceIndication                           CRITICALITY reject      TYPE DataTrafficResourceIndication                              PRESENCE mandatory}|
-       { ID id-SpectrumSharingGroupID                                          CRITICALITY reject      TYPE SpectrumSharingGroupID                                                     PRESENCE mandatory}|
-       { ID id-ListofEUTRACellsinEUTRACoordinationResp         CRITICALITY reject      TYPE ListofEUTRACellsinEUTRACoordinationResp    PRESENCE mandatory},
-       ...
-}
-*/
-
-struct ENB_EUTRA_NRCellResourceCoordinationReqAckIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_DataTrafficResourceIndication() { set(id_DataTrafficResourceIndication); type=1;}
-               void select_id_SpectrumSharingGroupID() { set(id_SpectrumSharingGroupID); type=2;}
-               void select_id_ListofEUTRACellsinEUTRACoordinationResp() { set(id_ListofEUTRACellsinEUTRACoordinationResp); type=3;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_DataTrafficResourceIndication)) { type = 1; return true; }
-                       else if(equal(id_SpectrumSharingGroupID)) { type = 2; return true; }
-                       else if(equal(id_ListofEUTRACellsinEUTRACoordinationResp)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_DataTrafficResourceIndication);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SpectrumSharingGroupID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_ListofEUTRACellsinEUTRACoordinationResp);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_DataTrafficResourceIndication() { set(reject); type=1;}
-               void select_id_SpectrumSharingGroupID() { set(reject); type=2;}
-               void select_id_ListofEUTRACellsinEUTRACoordinationResp() { set(reject); type=3;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(reject)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               DataTrafficResourceIndication& select_id_DataTrafficResourceIndication() { return set<DataTrafficResourceIndication>(1); }
-               DataTrafficResourceIndication const* get_id_DataTrafficResourceIndication() const { return get<DataTrafficResourceIndication>(1); }
-               SpectrumSharingGroupID& select_id_SpectrumSharingGroupID() { return set<SpectrumSharingGroupID>(2); }
-               SpectrumSharingGroupID const* get_id_SpectrumSharingGroupID() const { return get<SpectrumSharingGroupID>(2); }
-               ListofEUTRACellsinEUTRACoordinationResp& select_id_ListofEUTRACellsinEUTRACoordinationResp() { return set<ListofEUTRACellsinEUTRACoordinationResp>(3); }
-               ListofEUTRACellsinEUTRACoordinationResp const* get_id_ListofEUTRACellsinEUTRACoordinationResp() const { return get<ListofEUTRACellsinEUTRACoordinationResp>(3); }
-               bool is_unknown() const { return type == 4; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<DataTrafficResourceIndication>(); break;
-                       case 2: var.destroy<SpectrumSharingGroupID>(); break;
-                       case 3: var.destroy<ListofEUTRACellsinEUTRACoordinationResp>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<DataTrafficResourceIndication>(1);
-                       v.template operator()<SpectrumSharingGroupID>(2);
-                       v.template operator()<ListofEUTRACellsinEUTRACoordinationResp>(3);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_DataTrafficResourceIndication()); return true;
-                       case 2: v(select_id_SpectrumSharingGroupID()); return true;
-                       case 3: v(select_id_ListofEUTRACellsinEUTRACoordinationResp()); return true;
-                       case 4: if(type != 4) {clear(); asn::base::set();} type = 4; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<DataTrafficResourceIndication>()); return true;
-                       case 2: v(var.as<SpectrumSharingGroupID>()); return true;
-                       case 3: v(var.as<ListofEUTRACellsinEUTRACoordinationResp>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(DataTrafficResourceIndication)];
-                       char dummy2[sizeof(ListofEUTRACellsinEUTRACoordinationResp)];
-                       char dummy3[sizeof(SpectrumSharingGroupID)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_DataTrafficResourceIndication() { set(mandatory); type=1;}
-               void select_id_SpectrumSharingGroupID() { set(mandatory); type=2;}
-               void select_id_ListofEUTRACellsinEUTRACoordinationResp() { set(mandatory); type=3;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ListofEUTRACellsinEUTRACoordinationReq ::= SEQUENCE (SIZE (0..maxCellineNB)) OF ECGI
-*/
-
-struct ListofEUTRACellsinEUTRACoordinationReq_elm : ECGI
-{
-       static constexpr const char* name() {return "ListofEUTRACellsinEUTRACoordinationReq_elm";}
-       using parent_t = ECGI;
-
-};
-struct ListofEUTRACellsinEUTRACoordinationReq : asn::sequenceof<ListofEUTRACellsinEUTRACoordinationReq_elm>
-{
-       static constexpr const char* name() {return "ListofEUTRACellsinEUTRACoordinationReq";}
-       using parent_t = asn::sequenceof<ListofEUTRACellsinEUTRACoordinationReq_elm>;
-       using constraint_t = asn::constraints<false,asn::span<0,  maxCellineNB >>;
-
-};
-/*
-ENB-EUTRA-NRCellResourceCoordinationReqIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-DataTrafficResourceIndication                   CRITICALITY reject      TYPE DataTrafficResourceIndication                                      PRESENCE mandatory}|
-       { ID id-SpectrumSharingGroupID                                  CRITICALITY reject      TYPE SpectrumSharingGroupID                                                     PRESENCE mandatory}|
-       { ID id-ListofEUTRACellsinEUTRACoordinationReq  CRITICALITY reject      TYPE ListofEUTRACellsinEUTRACoordinationReq             PRESENCE mandatory},
-       ...
-}
-*/
-
-struct ENB_EUTRA_NRCellResourceCoordinationReqIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_DataTrafficResourceIndication() { set(id_DataTrafficResourceIndication); type=1;}
-               void select_id_SpectrumSharingGroupID() { set(id_SpectrumSharingGroupID); type=2;}
-               void select_id_ListofEUTRACellsinEUTRACoordinationReq() { set(id_ListofEUTRACellsinEUTRACoordinationReq); type=3;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_DataTrafficResourceIndication)) { type = 1; return true; }
-                       else if(equal(id_SpectrumSharingGroupID)) { type = 2; return true; }
-                       else if(equal(id_ListofEUTRACellsinEUTRACoordinationReq)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_DataTrafficResourceIndication);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SpectrumSharingGroupID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_ListofEUTRACellsinEUTRACoordinationReq);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_DataTrafficResourceIndication() { set(reject); type=1;}
-               void select_id_SpectrumSharingGroupID() { set(reject); type=2;}
-               void select_id_ListofEUTRACellsinEUTRACoordinationReq() { set(reject); type=3;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(reject)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               DataTrafficResourceIndication& select_id_DataTrafficResourceIndication() { return set<DataTrafficResourceIndication>(1); }
-               DataTrafficResourceIndication const* get_id_DataTrafficResourceIndication() const { return get<DataTrafficResourceIndication>(1); }
-               SpectrumSharingGroupID& select_id_SpectrumSharingGroupID() { return set<SpectrumSharingGroupID>(2); }
-               SpectrumSharingGroupID const* get_id_SpectrumSharingGroupID() const { return get<SpectrumSharingGroupID>(2); }
-               ListofEUTRACellsinEUTRACoordinationReq& select_id_ListofEUTRACellsinEUTRACoordinationReq() { return set<ListofEUTRACellsinEUTRACoordinationReq>(3); }
-               ListofEUTRACellsinEUTRACoordinationReq const* get_id_ListofEUTRACellsinEUTRACoordinationReq() const { return get<ListofEUTRACellsinEUTRACoordinationReq>(3); }
-               bool is_unknown() const { return type == 4; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<DataTrafficResourceIndication>(); break;
-                       case 2: var.destroy<SpectrumSharingGroupID>(); break;
-                       case 3: var.destroy<ListofEUTRACellsinEUTRACoordinationReq>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<DataTrafficResourceIndication>(1);
-                       v.template operator()<SpectrumSharingGroupID>(2);
-                       v.template operator()<ListofEUTRACellsinEUTRACoordinationReq>(3);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_DataTrafficResourceIndication()); return true;
-                       case 2: v(select_id_SpectrumSharingGroupID()); return true;
-                       case 3: v(select_id_ListofEUTRACellsinEUTRACoordinationReq()); return true;
-                       case 4: if(type != 4) {clear(); asn::base::set();} type = 4; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<DataTrafficResourceIndication>()); return true;
-                       case 2: v(var.as<SpectrumSharingGroupID>()); return true;
-                       case 3: v(var.as<ListofEUTRACellsinEUTRACoordinationReq>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(DataTrafficResourceIndication)];
-                       char dummy2[sizeof(ListofEUTRACellsinEUTRACoordinationReq)];
-                       char dummy3[sizeof(SpectrumSharingGroupID)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_DataTrafficResourceIndication() { set(mandatory); type=1;}
-               void select_id_SpectrumSharingGroupID() { set(mandatory); type=2;}
-               void select_id_ListofEUTRACellsinEUTRACoordinationReq() { set(mandatory); type=3;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ServedCellsToModify-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-{ ID id-DeactivationIndication                 CRITICALITY ignore      EXTENSION DeactivationIndication                                PRESENCE optional },
-       ...
-}
-*/
-
-struct ServedCellsToModify_Item_ExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_DeactivationIndication() { set(id_DeactivationIndication); type=1;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_DeactivationIndication)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_DeactivationIndication);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_DeactivationIndication() { set(ignore); type=1;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               DeactivationIndication& select_id_DeactivationIndication() { return set<DeactivationIndication>(1); }
-               DeactivationIndication const* get_id_DeactivationIndication() const { return get<DeactivationIndication>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<DeactivationIndication>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<DeactivationIndication>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_DeactivationIndication()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<DeactivationIndication>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(DeactivationIndication)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_DeactivationIndication() { set(optional); type=1;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(optional)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ServedCellsToModify-Item::= SEQUENCE {
-       old-ecgi                                                ECGI,
-       servedCellInfo                                  ServedCell-Information,
-       neighbour-Info                                  Neighbour-Information                   OPTIONAL,
-       iE-Extensions                                   ProtocolExtensionContainer { {ServedCellsToModify-Item-ExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct ServedCellsToModify_Item : asn::sequence<4, 0, true, 2>
-{
-       static constexpr const char* name() {return "ServedCellsToModify-Item";}
-       using parent_t = asn::sequence<4, 0, true, 2>;
-       struct old_ecgi_t : ECGI
-       {
-               static constexpr const char* name() {return "old_ecgi_t";}
-               using parent_t = ECGI;
-
-       };
-       old_ecgi_t& ref_old_ecgi() {return old_ecgi;}
-       old_ecgi_t const& ref_old_ecgi() const {return old_ecgi;}
-       struct servedCellInfo_t : ServedCell_Information
-       {
-               static constexpr const char* name() {return "servedCellInfo_t";}
-               using parent_t = ServedCell_Information;
-
-       };
-       servedCellInfo_t& ref_servedCellInfo() {return servedCellInfo;}
-       servedCellInfo_t const& ref_servedCellInfo() const {return servedCellInfo;}
-       struct neighbour_Info_t : Neighbour_Information
-       {
-               static constexpr const char* name() {return "neighbour_Info_t";}
-               using parent_t = Neighbour_Information;
-               static constexpr bool optional = true;
-
-       };
-       neighbour_Info_t& set_neighbour_Info() { neighbour_Info.setpresent(true); return neighbour_Info;}
-       neighbour_Info_t const* get_neighbour_Info() const {return neighbour_Info.is_valid() ? &neighbour_Info : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<ServedCellsToModify_Item_ExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<ServedCellsToModify_Item_ExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(old_ecgi);
-               v(servedCellInfo);
-               v(neighbour_Info);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(old_ecgi);
-               v(servedCellInfo);
-               v(neighbour_Info);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               old_ecgi.clear();
-               servedCellInfo.clear();
-               neighbour_Info.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       old_ecgi_t      old_ecgi;
-       servedCellInfo_t        servedCellInfo;
-       neighbour_Info_t        neighbour_Info;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-ServedCellsToModify::= SEQUENCE (SIZE (1..maxCellineNB)) OF ServedCellsToModify-Item
-*/
-
-struct ServedCellsToModify_elm : ServedCellsToModify_Item
-{
-       static constexpr const char* name() {return "ServedCellsToModify_elm";}
-       using parent_t = ServedCellsToModify_Item;
-
-};
-struct ServedCellsToModify : asn::sequenceof<ServedCellsToModify_elm>
-{
-       static constexpr const char* name() {return "ServedCellsToModify";}
-       using parent_t = asn::sequenceof<ServedCellsToModify_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxCellineNB >>;
-
-};
-/*
-Old-ECGIs::= SEQUENCE (SIZE (1..maxCellineNB)) OF ECGI
-*/
-
-struct Old_ECGIs_elm : ECGI
-{
-       static constexpr const char* name() {return "Old_ECGIs_elm";}
-       using parent_t = ECGI;
-
-};
-struct Old_ECGIs : asn::sequenceof<Old_ECGIs_elm>
-{
-       static constexpr const char* name() {return "Old-ECGIs";}
-       using parent_t = asn::sequenceof<Old_ECGIs_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxCellineNB >>;
-
-};
-/*
-ENBConfigurationUpdate-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-ServedCellsToAdd                        CRITICALITY reject      TYPE ServedCells                                        PRESENCE optional}|
-       { ID id-ServedCellsToModify                     CRITICALITY reject      TYPE ServedCellsToModify                        PRESENCE optional}|
-       { ID id-ServedCellsToDelete                     CRITICALITY reject      TYPE Old-ECGIs                                          PRESENCE optional}|
-       { ID id-GUGroupIDToAddList                      CRITICALITY reject      TYPE GUGroupIDList                                      PRESENCE optional}|
-       { ID id-GUGroupIDToDeleteList           CRITICALITY reject      TYPE GUGroupIDList                                      PRESENCE optional}|
-       { ID id-CoverageModificationList        CRITICALITY reject      TYPE CoverageModificationList           PRESENCE optional},
-       ...
-}
-*/
-
-struct ENBConfigurationUpdate_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 7; }
-               void clear() {type = 0;}
-               void select_id_ServedCellsToAdd() { set(id_ServedCellsToAdd); type=1;}
-               void select_id_ServedCellsToModify() { set(id_ServedCellsToModify); type=2;}
-               void select_id_ServedCellsToDelete() { set(id_ServedCellsToDelete); type=3;}
-               void select_id_GUGroupIDToAddList() { set(id_GUGroupIDToAddList); type=4;}
-               void select_id_GUGroupIDToDeleteList() { set(id_GUGroupIDToDeleteList); type=5;}
-               void select_id_CoverageModificationList() { set(id_CoverageModificationList); type=6;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_ServedCellsToAdd)) { type = 1; return true; }
-                       else if(equal(id_ServedCellsToModify)) { type = 2; return true; }
-                       else if(equal(id_ServedCellsToDelete)) { type = 3; return true; }
-                       else if(equal(id_GUGroupIDToAddList)) { type = 4; return true; }
-                       else if(equal(id_GUGroupIDToDeleteList)) { type = 5; return true; }
-                       else if(equal(id_CoverageModificationList)) { type = 6; return true; }
-                       else { type = 7; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_ServedCellsToAdd);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_ServedCellsToModify);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_ServedCellsToDelete);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_GUGroupIDToAddList);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_GUGroupIDToDeleteList);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(id_CoverageModificationList);} return false;
-                       case 7: type = 7; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 7; }
-               void clear() {type = 0;}
-               void select_id_ServedCellsToAdd() { set(reject); type=1;}
-               void select_id_ServedCellsToModify() { set(reject); type=2;}
-               void select_id_ServedCellsToDelete() { set(reject); type=3;}
-               void select_id_GUGroupIDToAddList() { set(reject); type=4;}
-               void select_id_GUGroupIDToDeleteList() { set(reject); type=5;}
-               void select_id_CoverageModificationList() { set(reject); type=6;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(reject)) { type = 3; return true; }
-                       else if(equal(reject)) { type = 4; return true; }
-                       else if(equal(reject)) { type = 5; return true; }
-                       else if(equal(reject)) { type = 6; return true; }
-                       else { type = 7; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 7: type = 7; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               ServedCells& select_id_ServedCellsToAdd() { return set<ServedCells>(1); }
-               ServedCells const* get_id_ServedCellsToAdd() const { return get<ServedCells>(1); }
-               ServedCellsToModify& select_id_ServedCellsToModify() { return set<ServedCellsToModify>(2); }
-               ServedCellsToModify const* get_id_ServedCellsToModify() const { return get<ServedCellsToModify>(2); }
-               Old_ECGIs& select_id_ServedCellsToDelete() { return set<Old_ECGIs>(3); }
-               Old_ECGIs const* get_id_ServedCellsToDelete() const { return get<Old_ECGIs>(3); }
-               GUGroupIDList& select_id_GUGroupIDToAddList() { return set<GUGroupIDList>(4); }
-               GUGroupIDList const* get_id_GUGroupIDToAddList() const { return get<GUGroupIDList>(4); }
-               GUGroupIDList& select_id_GUGroupIDToDeleteList() { return set<GUGroupIDList>(5); }
-               GUGroupIDList const* get_id_GUGroupIDToDeleteList() const { return get<GUGroupIDList>(5); }
-               CoverageModificationList& select_id_CoverageModificationList() { return set<CoverageModificationList>(6); }
-               CoverageModificationList const* get_id_CoverageModificationList() const { return get<CoverageModificationList>(6); }
-               bool is_unknown() const { return type == 7; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<ServedCells>(); break;
-                       case 2: var.destroy<ServedCellsToModify>(); break;
-                       case 3: var.destroy<Old_ECGIs>(); break;
-                       case 4: var.destroy<GUGroupIDList>(); break;
-                       case 5: var.destroy<GUGroupIDList>(); break;
-                       case 6: var.destroy<CoverageModificationList>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<ServedCells>(1);
-                       v.template operator()<ServedCellsToModify>(2);
-                       v.template operator()<Old_ECGIs>(3);
-                       v.template operator()<GUGroupIDList>(4);
-                       v.template operator()<GUGroupIDList>(5);
-                       v.template operator()<CoverageModificationList>(6);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_ServedCellsToAdd()); return true;
-                       case 2: v(select_id_ServedCellsToModify()); return true;
-                       case 3: v(select_id_ServedCellsToDelete()); return true;
-                       case 4: v(select_id_GUGroupIDToAddList()); return true;
-                       case 5: v(select_id_GUGroupIDToDeleteList()); return true;
-                       case 6: v(select_id_CoverageModificationList()); return true;
-                       case 7: if(type != 7) {clear(); asn::base::set();} type = 7; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<ServedCells>()); return true;
-                       case 2: v(var.as<ServedCellsToModify>()); return true;
-                       case 3: v(var.as<Old_ECGIs>()); return true;
-                       case 4: v(var.as<GUGroupIDList>()); return true;
-                       case 5: v(var.as<GUGroupIDList>()); return true;
-                       case 6: v(var.as<CoverageModificationList>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(CoverageModificationList)];
-                       char dummy2[sizeof(GUGroupIDList)];
-                       char dummy3[sizeof(Old_ECGIs)];
-                       char dummy4[sizeof(ServedCells)];
-                       char dummy5[sizeof(ServedCellsToModify)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 7; }
-               void clear() {type = 0;}
-               void select_id_ServedCellsToAdd() { set(optional); type=1;}
-               void select_id_ServedCellsToModify() { set(optional); type=2;}
-               void select_id_ServedCellsToDelete() { set(optional); type=3;}
-               void select_id_GUGroupIDToAddList() { set(optional); type=4;}
-               void select_id_GUGroupIDToDeleteList() { set(optional); type=5;}
-               void select_id_CoverageModificationList() { set(optional); type=6;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(optional)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else if(equal(optional)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else if(equal(optional)) { type = 6; return true; }
-                       else { type = 7; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 7: type = 7; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ENBConfigurationUpdate ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{ENBConfigurationUpdate-IEs}},
-       ...
-}
-*/
-
-struct ENBConfigurationUpdate : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "ENBConfigurationUpdate";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<ENBConfigurationUpdate_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<ENBConfigurationUpdate_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-ENBConfigurationUpdateAcknowledge-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-CriticalityDiagnostics          CRITICALITY ignore      TYPE CriticalityDiagnostics                     PRESENCE optional},
-...
-}
-*/
-
-struct ENBConfigurationUpdateAcknowledge_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_CriticalityDiagnostics)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(1); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<CriticalityDiagnostics>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<CriticalityDiagnostics>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_CriticalityDiagnostics()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<CriticalityDiagnostics>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(CriticalityDiagnostics)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(optional)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ENBConfigurationUpdateAcknowledge ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{ENBConfigurationUpdateAcknowledge-IEs}},
-       ...
-}
-*/
-
-struct ENBConfigurationUpdateAcknowledge : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "ENBConfigurationUpdateAcknowledge";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<ENBConfigurationUpdateAcknowledge_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<ENBConfigurationUpdateAcknowledge_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-ENBConfigurationUpdateFailure-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-Cause                                           CRITICALITY ignore      TYPE Cause                                              PRESENCE mandatory}|
-       { ID id-TimeToWait                                      CRITICALITY ignore      TYPE TimeToWait                                 PRESENCE optional}|
-       { ID id-CriticalityDiagnostics          CRITICALITY ignore      TYPE CriticalityDiagnostics             PRESENCE optional},
-       ...
-}
-*/
-
-struct ENBConfigurationUpdateFailure_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_Cause() { set(id_Cause); type=1;}
-               void select_id_TimeToWait() { set(id_TimeToWait); type=2;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=3;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_Cause)) { type = 1; return true; }
-                       else if(equal(id_TimeToWait)) { type = 2; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_Cause);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_TimeToWait);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_Cause() { set(ignore); type=1;}
-               void select_id_TimeToWait() { set(ignore); type=2;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=3;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               Cause& select_id_Cause() { return set<Cause>(1); }
-               Cause const* get_id_Cause() const { return get<Cause>(1); }
-               TimeToWait& select_id_TimeToWait() { return set<TimeToWait>(2); }
-               TimeToWait const* get_id_TimeToWait() const { return get<TimeToWait>(2); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(3); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(3); }
-               bool is_unknown() const { return type == 4; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<Cause>(); break;
-                       case 2: var.destroy<TimeToWait>(); break;
-                       case 3: var.destroy<CriticalityDiagnostics>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<Cause>(1);
-                       v.template operator()<TimeToWait>(2);
-                       v.template operator()<CriticalityDiagnostics>(3);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_Cause()); return true;
-                       case 2: v(select_id_TimeToWait()); return true;
-                       case 3: v(select_id_CriticalityDiagnostics()); return true;
-                       case 4: if(type != 4) {clear(); asn::base::set();} type = 4; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<Cause>()); return true;
-                       case 2: v(var.as<TimeToWait>()); return true;
-                       case 3: v(var.as<CriticalityDiagnostics>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(Cause)];
-                       char dummy2[sizeof(CriticalityDiagnostics)];
-                       char dummy3[sizeof(TimeToWait)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_Cause() { set(mandatory); type=1;}
-               void select_id_TimeToWait() { set(optional); type=2;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=3;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else if(equal(optional)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ENBConfigurationUpdateFailure ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{ENBConfigurationUpdateFailure-IEs}},
-       ...
-}
-*/
-
-struct ENBConfigurationUpdateFailure : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "ENBConfigurationUpdateFailure";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<ENBConfigurationUpdateFailure_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<ENBConfigurationUpdateFailure_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-ENDCCellActivationFailure-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-ActivationID                                    CRITICALITY reject      TYPE ActivationID                               PRESENCE mandatory }|
-       { ID id-Cause                                           CRITICALITY ignore      TYPE Cause                                              PRESENCE mandatory }|
-       { ID id-CriticalityDiagnostics          CRITICALITY ignore      TYPE CriticalityDiagnostics             PRESENCE optional },
-       ...
-}
-*/
-
-struct ENDCCellActivationFailure_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_ActivationID() { set(id_ActivationID); type=1;}
-               void select_id_Cause() { set(id_Cause); type=2;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=3;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_ActivationID)) { type = 1; return true; }
-                       else if(equal(id_Cause)) { type = 2; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_ActivationID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_Cause);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_ActivationID() { set(reject); type=1;}
-               void select_id_Cause() { set(ignore); type=2;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=3;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               ActivationID& select_id_ActivationID() { return set<ActivationID>(1); }
-               ActivationID const* get_id_ActivationID() const { return get<ActivationID>(1); }
-               Cause& select_id_Cause() { return set<Cause>(2); }
-               Cause const* get_id_Cause() const { return get<Cause>(2); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(3); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(3); }
-               bool is_unknown() const { return type == 4; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<ActivationID>(); break;
-                       case 2: var.destroy<Cause>(); break;
-                       case 3: var.destroy<CriticalityDiagnostics>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<ActivationID>(1);
-                       v.template operator()<Cause>(2);
-                       v.template operator()<CriticalityDiagnostics>(3);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_ActivationID()); return true;
-                       case 2: v(select_id_Cause()); return true;
-                       case 3: v(select_id_CriticalityDiagnostics()); return true;
-                       case 4: if(type != 4) {clear(); asn::base::set();} type = 4; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<ActivationID>()); return true;
-                       case 2: v(var.as<Cause>()); return true;
-                       case 3: v(var.as<CriticalityDiagnostics>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(ActivationID)];
-                       char dummy2[sizeof(Cause)];
-                       char dummy3[sizeof(CriticalityDiagnostics)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_ActivationID() { set(mandatory); type=1;}
-               void select_id_Cause() { set(mandatory); type=2;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=3;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(optional)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ENDCCellActivationFailure ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{ENDCCellActivationFailure-IEs}},
-       ...
-}
-*/
-
-struct ENDCCellActivationFailure : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "ENDCCellActivationFailure";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<ENDCCellActivationFailure_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<ENDCCellActivationFailure_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-ServedNRCellsToActivate-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct ServedNRCellsToActivate_Item_ExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ServedNRCellsToActivate-Item::= SEQUENCE {
-       nrCellID                                                NRCGI,
-       iE-Extensions                                   ProtocolExtensionContainer { {ServedNRCellsToActivate-Item-ExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct ServedNRCellsToActivate_Item : asn::sequence<2, 0, true, 1>
-{
-       static constexpr const char* name() {return "ServedNRCellsToActivate-Item";}
-       using parent_t = asn::sequence<2, 0, true, 1>;
-       struct nrCellID_t : NRCGI
-       {
-               static constexpr const char* name() {return "nrCellID_t";}
-               using parent_t = NRCGI;
-
-       };
-       nrCellID_t& ref_nrCellID() {return nrCellID;}
-       nrCellID_t const& ref_nrCellID() const {return nrCellID;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<ServedNRCellsToActivate_Item_ExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<ServedNRCellsToActivate_Item_ExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(nrCellID);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(nrCellID);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               nrCellID.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       nrCellID_t      nrCellID;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-ServedNRCellsToActivate::= SEQUENCE (SIZE (1.. maxCellinengNB)) OF ServedNRCellsToActivate-Item
-*/
-
-struct ServedNRCellsToActivate_elm : ServedNRCellsToActivate_Item
-{
-       static constexpr const char* name() {return "ServedNRCellsToActivate_elm";}
-       using parent_t = ServedNRCellsToActivate_Item;
-
-};
-struct ServedNRCellsToActivate : asn::sequenceof<ServedNRCellsToActivate_elm>
-{
-       static constexpr const char* name() {return "ServedNRCellsToActivate";}
-       using parent_t = asn::sequenceof<ServedNRCellsToActivate_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxCellinengNB >>;
-
-};
-/*
-ENDCCellActivationRequest-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-ServedNRCellsToActivate         CRITICALITY reject      TYPE ServedNRCellsToActivate                    PRESENCE mandatory}|
-       { ID id-ActivationID                            CRITICALITY reject      TYPE ActivationID                                       PRESENCE mandatory},
-       ...
-}
-*/
-
-struct ENDCCellActivationRequest_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_ServedNRCellsToActivate() { set(id_ServedNRCellsToActivate); type=1;}
-               void select_id_ActivationID() { set(id_ActivationID); type=2;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_ServedNRCellsToActivate)) { type = 1; return true; }
-                       else if(equal(id_ActivationID)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_ServedNRCellsToActivate);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_ActivationID);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_ServedNRCellsToActivate() { set(reject); type=1;}
-               void select_id_ActivationID() { set(reject); type=2;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               ServedNRCellsToActivate& select_id_ServedNRCellsToActivate() { return set<ServedNRCellsToActivate>(1); }
-               ServedNRCellsToActivate const* get_id_ServedNRCellsToActivate() const { return get<ServedNRCellsToActivate>(1); }
-               ActivationID& select_id_ActivationID() { return set<ActivationID>(2); }
-               ActivationID const* get_id_ActivationID() const { return get<ActivationID>(2); }
-               bool is_unknown() const { return type == 3; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<ServedNRCellsToActivate>(); break;
-                       case 2: var.destroy<ActivationID>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<ServedNRCellsToActivate>(1);
-                       v.template operator()<ActivationID>(2);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_ServedNRCellsToActivate()); return true;
-                       case 2: v(select_id_ActivationID()); return true;
-                       case 3: if(type != 3) {clear(); asn::base::set();} type = 3; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<ServedNRCellsToActivate>()); return true;
-                       case 2: v(var.as<ActivationID>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(ActivationID)];
-                       char dummy2[sizeof(ServedNRCellsToActivate)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_ServedNRCellsToActivate() { set(mandatory); type=1;}
-               void select_id_ActivationID() { set(mandatory); type=2;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ENDCCellActivationRequest ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{ENDCCellActivationRequest-IEs}},
-       ...
-}
-*/
-
-struct ENDCCellActivationRequest : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "ENDCCellActivationRequest";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<ENDCCellActivationRequest_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<ENDCCellActivationRequest_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-ENDCCellActivationResponse-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-ActivatedNRCellList             CRITICALITY ignore      TYPE ActivatedNRCellList                                PRESENCE mandatory}|
-       { ID id-ActivationID                            CRITICALITY reject      TYPE ActivationID                                       PRESENCE mandatory}|
-       { ID id-CriticalityDiagnostics  CRITICALITY ignore      TYPE CriticalityDiagnostics                     PRESENCE optional},
-       ...
-}
-*/
-
-struct ENDCCellActivationResponse_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_ActivatedNRCellList() { set(id_ActivatedNRCellList); type=1;}
-               void select_id_ActivationID() { set(id_ActivationID); type=2;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=3;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_ActivatedNRCellList)) { type = 1; return true; }
-                       else if(equal(id_ActivationID)) { type = 2; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_ActivatedNRCellList);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_ActivationID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_ActivatedNRCellList() { set(ignore); type=1;}
-               void select_id_ActivationID() { set(reject); type=2;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=3;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               ActivatedNRCellList& select_id_ActivatedNRCellList() { return set<ActivatedNRCellList>(1); }
-               ActivatedNRCellList const* get_id_ActivatedNRCellList() const { return get<ActivatedNRCellList>(1); }
-               ActivationID& select_id_ActivationID() { return set<ActivationID>(2); }
-               ActivationID const* get_id_ActivationID() const { return get<ActivationID>(2); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(3); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(3); }
-               bool is_unknown() const { return type == 4; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<ActivatedNRCellList>(); break;
-                       case 2: var.destroy<ActivationID>(); break;
-                       case 3: var.destroy<CriticalityDiagnostics>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<ActivatedNRCellList>(1);
-                       v.template operator()<ActivationID>(2);
-                       v.template operator()<CriticalityDiagnostics>(3);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_ActivatedNRCellList()); return true;
-                       case 2: v(select_id_ActivationID()); return true;
-                       case 3: v(select_id_CriticalityDiagnostics()); return true;
-                       case 4: if(type != 4) {clear(); asn::base::set();} type = 4; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<ActivatedNRCellList>()); return true;
-                       case 2: v(var.as<ActivationID>()); return true;
-                       case 3: v(var.as<CriticalityDiagnostics>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(ActivatedNRCellList)];
-                       char dummy2[sizeof(ActivationID)];
-                       char dummy3[sizeof(CriticalityDiagnostics)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_ActivatedNRCellList() { set(mandatory); type=1;}
-               void select_id_ActivationID() { set(mandatory); type=2;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=3;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(optional)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ENDCCellActivationResponse ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{ENDCCellActivationResponse-IEs}},
-       ...
-}
-*/
-
-struct ENDCCellActivationResponse : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "ENDCCellActivationResponse";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<ENDCCellActivationResponse_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<ENDCCellActivationResponse_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-FDD-InfoServedNRCell-Information-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct FDD_InfoServedNRCell_Information_ExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-FDD-InfoServedNRCell-Information ::= SEQUENCE {
-       ul-NRFreqInfo                           NRFreqInfo,
-       dl-NRFreqInfo                           NRFreqInfo,
-       ul-NR-TxBW                              NR-TxBW,
-       dl-NR-TxBW                              NR-TxBW,
-       iE-Extensions                   ProtocolExtensionContainer { {FDD-InfoServedNRCell-Information-ExtIEs} }                OPTIONAL,
-       ...
-}
-*/
-
-struct FDD_InfoServedNRCell_Information : asn::sequence<5, 0, true, 1>
-{
-       static constexpr const char* name() {return "FDD-InfoServedNRCell-Information";}
-       using parent_t = asn::sequence<5, 0, true, 1>;
-       struct ul_NRFreqInfo_t : NRFreqInfo
-       {
-               static constexpr const char* name() {return "ul_NRFreqInfo_t";}
-               using parent_t = NRFreqInfo;
-
-       };
-       ul_NRFreqInfo_t& ref_ul_NRFreqInfo() {return ul_NRFreqInfo;}
-       ul_NRFreqInfo_t const& ref_ul_NRFreqInfo() const {return ul_NRFreqInfo;}
-       struct dl_NRFreqInfo_t : NRFreqInfo
-       {
-               static constexpr const char* name() {return "dl_NRFreqInfo_t";}
-               using parent_t = NRFreqInfo;
-
-       };
-       dl_NRFreqInfo_t& ref_dl_NRFreqInfo() {return dl_NRFreqInfo;}
-       dl_NRFreqInfo_t const& ref_dl_NRFreqInfo() const {return dl_NRFreqInfo;}
-       struct ul_NR_TxBW_t : NR_TxBW
-       {
-               static constexpr const char* name() {return "ul_NR_TxBW_t";}
-               using parent_t = NR_TxBW;
-
-       };
-       ul_NR_TxBW_t& ref_ul_NR_TxBW() {return ul_NR_TxBW;}
-       ul_NR_TxBW_t const& ref_ul_NR_TxBW() const {return ul_NR_TxBW;}
-       struct dl_NR_TxBW_t : NR_TxBW
-       {
-               static constexpr const char* name() {return "dl_NR_TxBW_t";}
-               using parent_t = NR_TxBW;
-
-       };
-       dl_NR_TxBW_t& ref_dl_NR_TxBW() {return dl_NR_TxBW;}
-       dl_NR_TxBW_t const& ref_dl_NR_TxBW() const {return dl_NR_TxBW;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<FDD_InfoServedNRCell_Information_ExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<FDD_InfoServedNRCell_Information_ExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(ul_NRFreqInfo);
-               v(dl_NRFreqInfo);
-               v(ul_NR_TxBW);
-               v(dl_NR_TxBW);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(ul_NRFreqInfo);
-               v(dl_NRFreqInfo);
-               v(ul_NR_TxBW);
-               v(dl_NR_TxBW);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               ul_NRFreqInfo.clear();
-               dl_NRFreqInfo.clear();
-               ul_NR_TxBW.clear();
-               dl_NR_TxBW.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       ul_NRFreqInfo_t ul_NRFreqInfo;
-       dl_NRFreqInfo_t dl_NRFreqInfo;
-       ul_NR_TxBW_t    ul_NR_TxBW;
-       dl_NR_TxBW_t    dl_NR_TxBW;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-TDD-InfoServedNRCell-Information-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct TDD_InfoServedNRCell_Information_ExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-TDD-InfoServedNRCell-Information ::= SEQUENCE {
-       nRFreqInfo                              NRFreqInfo,
-       nR-TxBW                                 NR-TxBW,
-       iE-Extensions                   ProtocolExtensionContainer { {TDD-InfoServedNRCell-Information-ExtIEs} }                OPTIONAL,
-       ...
-}
-*/
-
-struct TDD_InfoServedNRCell_Information : asn::sequence<3, 0, true, 1>
-{
-       static constexpr const char* name() {return "TDD-InfoServedNRCell-Information";}
-       using parent_t = asn::sequence<3, 0, true, 1>;
-       struct nRFreqInfo_t : NRFreqInfo
-       {
-               static constexpr const char* name() {return "nRFreqInfo_t";}
-               using parent_t = NRFreqInfo;
-
-       };
-       nRFreqInfo_t& ref_nRFreqInfo() {return nRFreqInfo;}
-       nRFreqInfo_t const& ref_nRFreqInfo() const {return nRFreqInfo;}
-       struct nR_TxBW_t : NR_TxBW
-       {
-               static constexpr const char* name() {return "nR_TxBW_t";}
-               using parent_t = NR_TxBW;
-
-       };
-       nR_TxBW_t& ref_nR_TxBW() {return nR_TxBW;}
-       nR_TxBW_t const& ref_nR_TxBW() const {return nR_TxBW;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<TDD_InfoServedNRCell_Information_ExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<TDD_InfoServedNRCell_Information_ExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(nRFreqInfo);
-               v(nR_TxBW);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(nRFreqInfo);
-               v(nR_TxBW);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               nRFreqInfo.clear();
-               nR_TxBW.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       nRFreqInfo_t    nRFreqInfo;
-       nR_TxBW_t       nR_TxBW;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-ServedNRCell-Information-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct ServedNRCell_Information_ExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ServedNRCell-Information ::= SEQUENCE {
-       nrpCI                           NRPCI,
-       nrCellID                        NRCGI,
-       fiveGS-TAC                      FiveGS-TAC      OPTIONAL,
-       configured-TAC          TAC                     OPTIONAL,
-       broadcastPLMNs          BroadcastPLMNs-Item,
-       nrModeInfo                      CHOICE {
-               fdd             FDD-InfoServedNRCell-Information,
-               tdd             TDD-InfoServedNRCell-Information,
-               ...
-       },
-       measurementTimingConfiguration  OCTET STRING,
-       iE-Extensions                                           ProtocolExtensionContainer { {ServedNRCell-Information-ExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct ServedNRCell_Information : asn::sequence<8, 0, true, 3>
-{
-       static constexpr const char* name() {return "ServedNRCell-Information";}
-       using parent_t = asn::sequence<8, 0, true, 3>;
-       struct nrpCI_t : NRPCI
-       {
-               static constexpr const char* name() {return "nrpCI_t";}
-               using parent_t = NRPCI;
-
-       };
-       nrpCI_t& ref_nrpCI() {return nrpCI;}
-       nrpCI_t const& ref_nrpCI() const {return nrpCI;}
-       struct nrCellID_t : NRCGI
-       {
-               static constexpr const char* name() {return "nrCellID_t";}
-               using parent_t = NRCGI;
-
-       };
-       nrCellID_t& ref_nrCellID() {return nrCellID;}
-       nrCellID_t const& ref_nrCellID() const {return nrCellID;}
-       struct fiveGS_TAC_t : FiveGS_TAC
-       {
-               static constexpr const char* name() {return "fiveGS_TAC_t";}
-               using parent_t = FiveGS_TAC;
-               static constexpr bool optional = true;
-
-       };
-       fiveGS_TAC_t& set_fiveGS_TAC() { fiveGS_TAC.setpresent(true); return fiveGS_TAC;}
-       fiveGS_TAC_t const* get_fiveGS_TAC() const {return fiveGS_TAC.is_valid() ? &fiveGS_TAC : nullptr;}
-       struct configured_TAC_t : TAC
-       {
-               static constexpr const char* name() {return "configured_TAC_t";}
-               using parent_t = TAC;
-               static constexpr bool optional = true;
-
-       };
-       configured_TAC_t& set_configured_TAC() { configured_TAC.setpresent(true); return configured_TAC;}
-       configured_TAC_t const* get_configured_TAC() const {return configured_TAC.is_valid() ? &configured_TAC : nullptr;}
-       struct broadcastPLMNs_t : BroadcastPLMNs_Item
-       {
-               static constexpr const char* name() {return "broadcastPLMNs_t";}
-               using parent_t = BroadcastPLMNs_Item;
-
-       };
-       broadcastPLMNs_t& ref_broadcastPLMNs() {return broadcastPLMNs;}
-       broadcastPLMNs_t const& ref_broadcastPLMNs() const {return broadcastPLMNs;}
-       struct nrModeInfo_t : asn::choice<2, 0, true>
-       {
-               static constexpr const char* name() {return "nrModeInfo_t";}
-               using parent_t = asn::choice<2, 0, true>;
-               index_type get_index() const {return index;}
-               bool is_unknown() const {return index == 3;}
-               void set_unknown() { set_index(3);  }
-               ~nrModeInfo_t() {clear();}
-               struct fdd_t : FDD_InfoServedNRCell_Information
-               {
-                       static constexpr const char* name() {return "fdd_t";}
-                       using parent_t = FDD_InfoServedNRCell_Information;
-
-               };
-               struct tdd_t : TDD_InfoServedNRCell_Information
-               {
-                       static constexpr const char* name() {return "tdd_t";}
-                       using parent_t = TDD_InfoServedNRCell_Information;
-
-               };
-               void clear()
-               {
-                       switch(get_index())
-                       {
-                       case 1: var.destroy<fdd_t>(); break;
-                       case 2: var.destroy<tdd_t>(); break;
-                       }
-                       index = 0;
-                       base::clear();
-               }
-               template<typename V> bool decode(size_t idx, V& v)
-               {
-                       clear();
-                       switch(idx)
-                       {
-                       case 1: set_index(1); return v(var.build<fdd_t>());
-                       case 2: set_index(2); return v(var.build<tdd_t>());
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       switch(get_index())
-                       {
-                       case 1: return v(var.as<fdd_t>());
-                       case 2: return v(var.as<tdd_t>());
-                       }
-                       return false;
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<fdd_t>(1);
-                       v.template operator()<tdd_t>(2);
-
-               }
-               fdd_t& select_fdd() { if(get_index() != 1) { clear(); set_index(1); return var.build<fdd_t>();} return var.as<fdd_t>();}
-               fdd_t const* get_fdd() const { if(get_index() == 1) { return &var.as<fdd_t>();} return nullptr; }
-               tdd_t& select_tdd() { if(get_index() != 2) { clear(); set_index(2); return var.build<tdd_t>();} return var.as<tdd_t>();}
-               tdd_t const* get_tdd() const { if(get_index() == 2) { return &var.as<tdd_t>();} return nullptr; }
-               private:
-               void set_index(index_type i) {index = i; base::set();}
-               union union_type
-               {
-                       char dummy1[sizeof(fdd_t)];
-                       char dummy2[sizeof(tdd_t)];
-
-               };
-               asn::variant<sizeof(union_type)>        var;
-               index_type      index {0};
-       };
-       nrModeInfo_t& ref_nrModeInfo() {return nrModeInfo;}
-       nrModeInfo_t const& ref_nrModeInfo() const {return nrModeInfo;}
-       struct measurementTimingConfiguration_t : asn::ostring<>
-       {
-               static constexpr const char* name() {return "measurementTimingConfiguration_t";}
-               using parent_t = asn::ostring<>;
-
-       };
-
-       measurementTimingConfiguration_t& ref_measurementTimingConfiguration() {return measurementTimingConfiguration;}
-       measurementTimingConfiguration_t const& ref_measurementTimingConfiguration() const {return measurementTimingConfiguration;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<ServedNRCell_Information_ExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<ServedNRCell_Information_ExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(nrpCI);
-               v(nrCellID);
-               v(fiveGS_TAC);
-               v(configured_TAC);
-               v(broadcastPLMNs);
-               v(nrModeInfo);
-               v(measurementTimingConfiguration);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(nrpCI);
-               v(nrCellID);
-               v(fiveGS_TAC);
-               v(configured_TAC);
-               v(broadcastPLMNs);
-               v(nrModeInfo);
-               v(measurementTimingConfiguration);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               nrpCI.clear();
-               nrCellID.clear();
-               fiveGS_TAC.clear();
-               configured_TAC.clear();
-               broadcastPLMNs.clear();
-               nrModeInfo.clear();
-               measurementTimingConfiguration.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       nrpCI_t nrpCI;
-       nrCellID_t      nrCellID;
-       fiveGS_TAC_t    fiveGS_TAC;
-       configured_TAC_t        configured_TAC;
-       broadcastPLMNs_t        broadcastPLMNs;
-       nrModeInfo_t    nrModeInfo;
-       measurementTimingConfiguration_t        measurementTimingConfiguration;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-En-gNBServedCells-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct En_gNBServedCells_ExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ServedNRcellsENDCX2ManagementList ::= SEQUENCE (SIZE (1.. maxCellinengNB)) OF SEQUENCE {
-       servedNRCellInfo                                                ServedNRCell-Information,
-       nRNeighbourInfo                                         NRNeighbour-Information OPTIONAL,
-       iE-Extensions                                           ProtocolExtensionContainer { {En-gNBServedCells-ExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct ServedNRcellsENDCX2ManagementList_elm : asn::sequence<3, 0, true, 2>
-{
-       static constexpr const char* name() {return "ServedNRcellsENDCX2ManagementList_elm";}
-       using parent_t = asn::sequence<3, 0, true, 2>;
-       struct servedNRCellInfo_t : ServedNRCell_Information
-       {
-               static constexpr const char* name() {return "servedNRCellInfo_t";}
-               using parent_t = ServedNRCell_Information;
-
-       };
-       servedNRCellInfo_t& ref_servedNRCellInfo() {return servedNRCellInfo;}
-       servedNRCellInfo_t const& ref_servedNRCellInfo() const {return servedNRCellInfo;}
-       struct nRNeighbourInfo_t : NRNeighbour_Information
-       {
-               static constexpr const char* name() {return "nRNeighbourInfo_t";}
-               using parent_t = NRNeighbour_Information;
-               static constexpr bool optional = true;
-
-       };
-       nRNeighbourInfo_t& set_nRNeighbourInfo() { nRNeighbourInfo.setpresent(true); return nRNeighbourInfo;}
-       nRNeighbourInfo_t const* get_nRNeighbourInfo() const {return nRNeighbourInfo.is_valid() ? &nRNeighbourInfo : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<En_gNBServedCells_ExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<En_gNBServedCells_ExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(servedNRCellInfo);
-               v(nRNeighbourInfo);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(servedNRCellInfo);
-               v(nRNeighbourInfo);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               servedNRCellInfo.clear();
-               nRNeighbourInfo.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       servedNRCellInfo_t      servedNRCellInfo;
-       nRNeighbourInfo_t       nRNeighbourInfo;
-       iE_Extensions_t iE_Extensions;
-
-};
-struct ServedNRcellsENDCX2ManagementList : asn::sequenceof<ServedNRcellsENDCX2ManagementList_elm>
-{
-       static constexpr const char* name() {return "ServedNRcellsENDCX2ManagementList";}
-       using parent_t = asn::sequenceof<ServedNRcellsENDCX2ManagementList_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxCellinengNB >>;
-
-};
-/*
-ServedNRCellsToModify-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct ServedNRCellsToModify_Item_ExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ServedNRCellsToModify-Item::= SEQUENCE {
-       old-nrcgi                                               NRCGI,
-       servedNRCellInformation                 ServedNRCell-Information,
-       nrNeighbourInformation                  NRNeighbour-Information                 OPTIONAL,
-       nrDeactivationIndication                        DeactivationIndication                  OPTIONAL,
-       iE-Extensions                                   ProtocolExtensionContainer { {ServedNRCellsToModify-Item-ExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct ServedNRCellsToModify_Item : asn::sequence<5, 0, true, 3>
-{
-       static constexpr const char* name() {return "ServedNRCellsToModify-Item";}
-       using parent_t = asn::sequence<5, 0, true, 3>;
-       struct old_nrcgi_t : NRCGI
-       {
-               static constexpr const char* name() {return "old_nrcgi_t";}
-               using parent_t = NRCGI;
-
-       };
-       old_nrcgi_t& ref_old_nrcgi() {return old_nrcgi;}
-       old_nrcgi_t const& ref_old_nrcgi() const {return old_nrcgi;}
-       struct servedNRCellInformation_t : ServedNRCell_Information
-       {
-               static constexpr const char* name() {return "servedNRCellInformation_t";}
-               using parent_t = ServedNRCell_Information;
-
-       };
-       servedNRCellInformation_t& ref_servedNRCellInformation() {return servedNRCellInformation;}
-       servedNRCellInformation_t const& ref_servedNRCellInformation() const {return servedNRCellInformation;}
-       struct nrNeighbourInformation_t : NRNeighbour_Information
-       {
-               static constexpr const char* name() {return "nrNeighbourInformation_t";}
-               using parent_t = NRNeighbour_Information;
-               static constexpr bool optional = true;
-
-       };
-       nrNeighbourInformation_t& set_nrNeighbourInformation() { nrNeighbourInformation.setpresent(true); return nrNeighbourInformation;}
-       nrNeighbourInformation_t const* get_nrNeighbourInformation() const {return nrNeighbourInformation.is_valid() ? &nrNeighbourInformation : nullptr;}
-       struct nrDeactivationIndication_t : DeactivationIndication
-       {
-               static constexpr const char* name() {return "nrDeactivationIndication_t";}
-               using parent_t = DeactivationIndication;
-               static constexpr bool optional = true;
-
-       };
-       nrDeactivationIndication_t& set_nrDeactivationIndication() { nrDeactivationIndication.setpresent(true); return nrDeactivationIndication;}
-       nrDeactivationIndication_t const* get_nrDeactivationIndication() const {return nrDeactivationIndication.is_valid() ? &nrDeactivationIndication : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<ServedNRCellsToModify_Item_ExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<ServedNRCellsToModify_Item_ExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(old_nrcgi);
-               v(servedNRCellInformation);
-               v(nrNeighbourInformation);
-               v(nrDeactivationIndication);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(old_nrcgi);
-               v(servedNRCellInformation);
-               v(nrNeighbourInformation);
-               v(nrDeactivationIndication);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               old_nrcgi.clear();
-               servedNRCellInformation.clear();
-               nrNeighbourInformation.clear();
-               nrDeactivationIndication.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       old_nrcgi_t     old_nrcgi;
-       servedNRCellInformation_t       servedNRCellInformation;
-       nrNeighbourInformation_t        nrNeighbourInformation;
-       nrDeactivationIndication_t      nrDeactivationIndication;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-ServedNRcellsToModifyENDCConfUpdList ::= SEQUENCE (SIZE (1..maxCellinengNB)) OF ServedNRCellsToModify-Item
-*/
-
-struct ServedNRcellsToModifyENDCConfUpdList_elm : ServedNRCellsToModify_Item
-{
-       static constexpr const char* name() {return "ServedNRcellsToModifyENDCConfUpdList_elm";}
-       using parent_t = ServedNRCellsToModify_Item;
-
-};
-struct ServedNRcellsToModifyENDCConfUpdList : asn::sequenceof<ServedNRcellsToModifyENDCConfUpdList_elm>
-{
-       static constexpr const char* name() {return "ServedNRcellsToModifyENDCConfUpdList";}
-       using parent_t = asn::sequenceof<ServedNRcellsToModifyENDCConfUpdList_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxCellinengNB >>;
-
-};
-/*
-ServedNRcellsToDeleteENDCConfUpdList ::= SEQUENCE (SIZE (1..maxCellinengNB)) OF NRCGI
-*/
-
-struct ServedNRcellsToDeleteENDCConfUpdList_elm : NRCGI
-{
-       static constexpr const char* name() {return "ServedNRcellsToDeleteENDCConfUpdList_elm";}
-       using parent_t = NRCGI;
-
-};
-struct ServedNRcellsToDeleteENDCConfUpdList : asn::sequenceof<ServedNRcellsToDeleteENDCConfUpdList_elm>
-{
-       static constexpr const char* name() {return "ServedNRcellsToDeleteENDCConfUpdList";}
-       using parent_t = asn::sequenceof<ServedNRcellsToDeleteENDCConfUpdList_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxCellinengNB >>;
-
-};
-/*
-En-gNB-ENDCConfigUpdateIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-ServedNRcellsENDCX2ManagementList               CRITICALITY reject      TYPE ServedNRcellsENDCX2ManagementList                  PRESENCE optional }|
-       { ID id-ServedNRcellsToModifyListENDCConfUpd            CRITICALITY reject      TYPE ServedNRcellsToModifyENDCConfUpdList               PRESENCE optional }|
-       { ID id-ServedNRcellsToDeleteListENDCConfUpd            CRITICALITY reject      TYPE ServedNRcellsToDeleteENDCConfUpdList               PRESENCE optional },
-       ...
-}
-*/
-
-struct En_gNB_ENDCConfigUpdateIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_ServedNRcellsENDCX2ManagementList() { set(id_ServedNRcellsENDCX2ManagementList); type=1;}
-               void select_id_ServedNRcellsToModifyListENDCConfUpd() { set(id_ServedNRcellsToModifyListENDCConfUpd); type=2;}
-               void select_id_ServedNRcellsToDeleteListENDCConfUpd() { set(id_ServedNRcellsToDeleteListENDCConfUpd); type=3;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_ServedNRcellsENDCX2ManagementList)) { type = 1; return true; }
-                       else if(equal(id_ServedNRcellsToModifyListENDCConfUpd)) { type = 2; return true; }
-                       else if(equal(id_ServedNRcellsToDeleteListENDCConfUpd)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_ServedNRcellsENDCX2ManagementList);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_ServedNRcellsToModifyListENDCConfUpd);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_ServedNRcellsToDeleteListENDCConfUpd);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_ServedNRcellsENDCX2ManagementList() { set(reject); type=1;}
-               void select_id_ServedNRcellsToModifyListENDCConfUpd() { set(reject); type=2;}
-               void select_id_ServedNRcellsToDeleteListENDCConfUpd() { set(reject); type=3;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(reject)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               ServedNRcellsENDCX2ManagementList& select_id_ServedNRcellsENDCX2ManagementList() { return set<ServedNRcellsENDCX2ManagementList>(1); }
-               ServedNRcellsENDCX2ManagementList const* get_id_ServedNRcellsENDCX2ManagementList() const { return get<ServedNRcellsENDCX2ManagementList>(1); }
-               ServedNRcellsToModifyENDCConfUpdList& select_id_ServedNRcellsToModifyListENDCConfUpd() { return set<ServedNRcellsToModifyENDCConfUpdList>(2); }
-               ServedNRcellsToModifyENDCConfUpdList const* get_id_ServedNRcellsToModifyListENDCConfUpd() const { return get<ServedNRcellsToModifyENDCConfUpdList>(2); }
-               ServedNRcellsToDeleteENDCConfUpdList& select_id_ServedNRcellsToDeleteListENDCConfUpd() { return set<ServedNRcellsToDeleteENDCConfUpdList>(3); }
-               ServedNRcellsToDeleteENDCConfUpdList const* get_id_ServedNRcellsToDeleteListENDCConfUpd() const { return get<ServedNRcellsToDeleteENDCConfUpdList>(3); }
-               bool is_unknown() const { return type == 4; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<ServedNRcellsENDCX2ManagementList>(); break;
-                       case 2: var.destroy<ServedNRcellsToModifyENDCConfUpdList>(); break;
-                       case 3: var.destroy<ServedNRcellsToDeleteENDCConfUpdList>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<ServedNRcellsENDCX2ManagementList>(1);
-                       v.template operator()<ServedNRcellsToModifyENDCConfUpdList>(2);
-                       v.template operator()<ServedNRcellsToDeleteENDCConfUpdList>(3);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_ServedNRcellsENDCX2ManagementList()); return true;
-                       case 2: v(select_id_ServedNRcellsToModifyListENDCConfUpd()); return true;
-                       case 3: v(select_id_ServedNRcellsToDeleteListENDCConfUpd()); return true;
-                       case 4: if(type != 4) {clear(); asn::base::set();} type = 4; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<ServedNRcellsENDCX2ManagementList>()); return true;
-                       case 2: v(var.as<ServedNRcellsToModifyENDCConfUpdList>()); return true;
-                       case 3: v(var.as<ServedNRcellsToDeleteENDCConfUpdList>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(ServedNRcellsENDCX2ManagementList)];
-                       char dummy2[sizeof(ServedNRcellsToDeleteENDCConfUpdList)];
-                       char dummy3[sizeof(ServedNRcellsToModifyENDCConfUpdList)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_ServedNRcellsENDCX2ManagementList() { set(optional); type=1;}
-               void select_id_ServedNRcellsToModifyListENDCConfUpd() { set(optional); type=2;}
-               void select_id_ServedNRcellsToDeleteListENDCConfUpd() { set(optional); type=3;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(optional)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else if(equal(optional)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-InitiatingNodeType-EndcConfigUpdate::= CHOICE {
-       init-eNB                        ProtocolIE-Container    {{ENB-ENDCConfigUpdateIEs}},
-       init-en-gNB                     ProtocolIE-Container    {{En-gNB-ENDCConfigUpdateIEs}},
-       ...
-}
-*/
-
-struct InitiatingNodeType_EndcConfigUpdate : asn::choice<2, 0, true>
-{
-       static constexpr const char* name() {return "InitiatingNodeType-EndcConfigUpdate";}
-       using parent_t = asn::choice<2, 0, true>;
-       index_type get_index() const {return index;}
-       bool is_unknown() const {return index == 3;}
-       void set_unknown() { set_index(3);  }
-       ~InitiatingNodeType_EndcConfigUpdate() {clear();}
-       struct init_eNB_t : ProtocolIE_Container<ENB_ENDCConfigUpdateIEs>
-       {
-               static constexpr const char* name() {return "init_eNB_t";}
-               using parent_t = ProtocolIE_Container<ENB_ENDCConfigUpdateIEs>;
-
-       };
-       struct init_en_gNB_t : ProtocolIE_Container<En_gNB_ENDCConfigUpdateIEs>
-       {
-               static constexpr const char* name() {return "init_en_gNB_t";}
-               using parent_t = ProtocolIE_Container<En_gNB_ENDCConfigUpdateIEs>;
-
-       };
-       void clear()
-       {
-               switch(get_index())
-               {
-               case 1: var.destroy<init_eNB_t>(); break;
-               case 2: var.destroy<init_en_gNB_t>(); break;
-               }
-               index = 0;
-               base::clear();
-       }
-       template<typename V> bool decode(size_t idx, V& v)
-       {
-               clear();
-               switch(idx)
-               {
-               case 1: set_index(1); return v(var.build<init_eNB_t>());
-               case 2: set_index(2); return v(var.build<init_en_gNB_t>());
-               }
-               return false;
-
-       }
-       template<typename V> bool encode(V& v) const
-       {
-               switch(get_index())
-               {
-               case 1: return v(var.as<init_eNB_t>());
-               case 2: return v(var.as<init_en_gNB_t>());
-               }
-               return false;
-       }
-       template<typename V> static inline void enumerate(V& v)
-       {
-               v.template operator()<init_eNB_t>(1);
-               v.template operator()<init_en_gNB_t>(2);
-
-       }
-       init_eNB_t& select_init_eNB() { if(get_index() != 1) { clear(); set_index(1); return var.build<init_eNB_t>();} return var.as<init_eNB_t>();}
-       init_eNB_t const* get_init_eNB() const { if(get_index() == 1) { return &var.as<init_eNB_t>();} return nullptr; }
-       init_en_gNB_t& select_init_en_gNB() { if(get_index() != 2) { clear(); set_index(2); return var.build<init_en_gNB_t>();} return var.as<init_en_gNB_t>();}
-       init_en_gNB_t const* get_init_en_gNB() const { if(get_index() == 2) { return &var.as<init_en_gNB_t>();} return nullptr; }
-       private:
-       void set_index(index_type i) {index = i; base::set();}
-       union union_type
-       {
-               char dummy1[sizeof(init_eNB_t)];
-               char dummy2[sizeof(init_en_gNB_t)];
-
-       };
-       asn::variant<sizeof(union_type)>        var;
-       index_type      index {0};
-};
-/*
-ENDCConfigurationUpdate-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-InitiatingNodeType-EndcConfigUpdate                     CRITICALITY reject      TYPE InitiatingNodeType-EndcConfigUpdate                        PRESENCE mandatory},
-       ...
-}
-*/
-
-struct ENDCConfigurationUpdate_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_InitiatingNodeType_EndcConfigUpdate() { set(id_InitiatingNodeType_EndcConfigUpdate); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_InitiatingNodeType_EndcConfigUpdate)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_InitiatingNodeType_EndcConfigUpdate);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_InitiatingNodeType_EndcConfigUpdate() { set(reject); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               InitiatingNodeType_EndcConfigUpdate& select_id_InitiatingNodeType_EndcConfigUpdate() { return set<InitiatingNodeType_EndcConfigUpdate>(1); }
-               InitiatingNodeType_EndcConfigUpdate const* get_id_InitiatingNodeType_EndcConfigUpdate() const { return get<InitiatingNodeType_EndcConfigUpdate>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<InitiatingNodeType_EndcConfigUpdate>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<InitiatingNodeType_EndcConfigUpdate>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_InitiatingNodeType_EndcConfigUpdate()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<InitiatingNodeType_EndcConfigUpdate>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(InitiatingNodeType_EndcConfigUpdate)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_InitiatingNodeType_EndcConfigUpdate() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ENDCConfigurationUpdate ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{ENDCConfigurationUpdate-IEs}},
-       ...
-}
-*/
-
-struct ENDCConfigurationUpdate : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "ENDCConfigurationUpdate";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<ENDCConfigurationUpdate_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<ENDCConfigurationUpdate_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-En-gNB-ENDCConfigUpdateAckIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-ServedNRcellsENDCX2ManagementList               CRITICALITY reject      TYPE ServedNRcellsENDCX2ManagementList          PRESENCE optional},
-       ...
-}
-*/
-
-struct En_gNB_ENDCConfigUpdateAckIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_ServedNRcellsENDCX2ManagementList() { set(id_ServedNRcellsENDCX2ManagementList); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_ServedNRcellsENDCX2ManagementList)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_ServedNRcellsENDCX2ManagementList);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_ServedNRcellsENDCX2ManagementList() { set(reject); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               ServedNRcellsENDCX2ManagementList& select_id_ServedNRcellsENDCX2ManagementList() { return set<ServedNRcellsENDCX2ManagementList>(1); }
-               ServedNRcellsENDCX2ManagementList const* get_id_ServedNRcellsENDCX2ManagementList() const { return get<ServedNRcellsENDCX2ManagementList>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<ServedNRcellsENDCX2ManagementList>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<ServedNRcellsENDCX2ManagementList>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_ServedNRcellsENDCX2ManagementList()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<ServedNRcellsENDCX2ManagementList>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(ServedNRcellsENDCX2ManagementList)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_ServedNRcellsENDCX2ManagementList() { set(optional); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(optional)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-RespondingNodeType-EndcConfigUpdate::= CHOICE {
-       respond-eNB                     ProtocolIE-Container    {{ENB-ENDCConfigUpdateAckIEs}},
-       respond-en-gNB          ProtocolIE-Container    {{En-gNB-ENDCConfigUpdateAckIEs}},
-       ...
-}
-*/
-
-struct RespondingNodeType_EndcConfigUpdate : asn::choice<2, 0, true>
-{
-       static constexpr const char* name() {return "RespondingNodeType-EndcConfigUpdate";}
-       using parent_t = asn::choice<2, 0, true>;
-       index_type get_index() const {return index;}
-       bool is_unknown() const {return index == 3;}
-       void set_unknown() { set_index(3);  }
-       ~RespondingNodeType_EndcConfigUpdate() {clear();}
-       struct respond_eNB_t : ProtocolIE_Container<ENB_ENDCConfigUpdateAckIEs>
-       {
-               static constexpr const char* name() {return "respond_eNB_t";}
-               using parent_t = ProtocolIE_Container<ENB_ENDCConfigUpdateAckIEs>;
-
-       };
-       struct respond_en_gNB_t : ProtocolIE_Container<En_gNB_ENDCConfigUpdateAckIEs>
-       {
-               static constexpr const char* name() {return "respond_en_gNB_t";}
-               using parent_t = ProtocolIE_Container<En_gNB_ENDCConfigUpdateAckIEs>;
-
-       };
-       void clear()
-       {
-               switch(get_index())
-               {
-               case 1: var.destroy<respond_eNB_t>(); break;
-               case 2: var.destroy<respond_en_gNB_t>(); break;
-               }
-               index = 0;
-               base::clear();
-       }
-       template<typename V> bool decode(size_t idx, V& v)
-       {
-               clear();
-               switch(idx)
-               {
-               case 1: set_index(1); return v(var.build<respond_eNB_t>());
-               case 2: set_index(2); return v(var.build<respond_en_gNB_t>());
-               }
-               return false;
-
-       }
-       template<typename V> bool encode(V& v) const
-       {
-               switch(get_index())
-               {
-               case 1: return v(var.as<respond_eNB_t>());
-               case 2: return v(var.as<respond_en_gNB_t>());
-               }
-               return false;
-       }
-       template<typename V> static inline void enumerate(V& v)
-       {
-               v.template operator()<respond_eNB_t>(1);
-               v.template operator()<respond_en_gNB_t>(2);
-
-       }
-       respond_eNB_t& select_respond_eNB() { if(get_index() != 1) { clear(); set_index(1); return var.build<respond_eNB_t>();} return var.as<respond_eNB_t>();}
-       respond_eNB_t const* get_respond_eNB() const { if(get_index() == 1) { return &var.as<respond_eNB_t>();} return nullptr; }
-       respond_en_gNB_t& select_respond_en_gNB() { if(get_index() != 2) { clear(); set_index(2); return var.build<respond_en_gNB_t>();} return var.as<respond_en_gNB_t>();}
-       respond_en_gNB_t const* get_respond_en_gNB() const { if(get_index() == 2) { return &var.as<respond_en_gNB_t>();} return nullptr; }
-       private:
-       void set_index(index_type i) {index = i; base::set();}
-       union union_type
-       {
-               char dummy1[sizeof(respond_eNB_t)];
-               char dummy2[sizeof(respond_en_gNB_t)];
-
-       };
-       asn::variant<sizeof(union_type)>        var;
-       index_type      index {0};
-};
-/*
-ENDCConfigurationUpdateAcknowledge-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-RespondingNodeType-EndcConfigUpdate                     CRITICALITY reject      TYPE RespondingNodeType-EndcConfigUpdate                        PRESENCE mandatory},
-       ...
-}
-*/
-
-struct ENDCConfigurationUpdateAcknowledge_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_RespondingNodeType_EndcConfigUpdate() { set(id_RespondingNodeType_EndcConfigUpdate); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_RespondingNodeType_EndcConfigUpdate)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_RespondingNodeType_EndcConfigUpdate);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_RespondingNodeType_EndcConfigUpdate() { set(reject); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               RespondingNodeType_EndcConfigUpdate& select_id_RespondingNodeType_EndcConfigUpdate() { return set<RespondingNodeType_EndcConfigUpdate>(1); }
-               RespondingNodeType_EndcConfigUpdate const* get_id_RespondingNodeType_EndcConfigUpdate() const { return get<RespondingNodeType_EndcConfigUpdate>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<RespondingNodeType_EndcConfigUpdate>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<RespondingNodeType_EndcConfigUpdate>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_RespondingNodeType_EndcConfigUpdate()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<RespondingNodeType_EndcConfigUpdate>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(RespondingNodeType_EndcConfigUpdate)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_RespondingNodeType_EndcConfigUpdate() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ENDCConfigurationUpdateAcknowledge ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{ENDCConfigurationUpdateAcknowledge-IEs}},
-       ...
-}
-*/
-
-struct ENDCConfigurationUpdateAcknowledge : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "ENDCConfigurationUpdateAcknowledge";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<ENDCConfigurationUpdateAcknowledge_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<ENDCConfigurationUpdateAcknowledge_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-ENDCConfigurationUpdateFailure-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-Cause                                           CRITICALITY ignore      TYPE Cause                                              PRESENCE mandatory}|
-       { ID id-CriticalityDiagnostics          CRITICALITY ignore      TYPE CriticalityDiagnostics             PRESENCE optional }|
-       { ID id-TimeToWait                                      CRITICALITY ignore      TYPE TimeToWait                                 PRESENCE optional },
-       ...
-}
-*/
-
-struct ENDCConfigurationUpdateFailure_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_Cause() { set(id_Cause); type=1;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=2;}
-               void select_id_TimeToWait() { set(id_TimeToWait); type=3;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_Cause)) { type = 1; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 2; return true; }
-                       else if(equal(id_TimeToWait)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_Cause);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_TimeToWait);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_Cause() { set(ignore); type=1;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=2;}
-               void select_id_TimeToWait() { set(ignore); type=3;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               Cause& select_id_Cause() { return set<Cause>(1); }
-               Cause const* get_id_Cause() const { return get<Cause>(1); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(2); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(2); }
-               TimeToWait& select_id_TimeToWait() { return set<TimeToWait>(3); }
-               TimeToWait const* get_id_TimeToWait() const { return get<TimeToWait>(3); }
-               bool is_unknown() const { return type == 4; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<Cause>(); break;
-                       case 2: var.destroy<CriticalityDiagnostics>(); break;
-                       case 3: var.destroy<TimeToWait>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<Cause>(1);
-                       v.template operator()<CriticalityDiagnostics>(2);
-                       v.template operator()<TimeToWait>(3);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_Cause()); return true;
-                       case 2: v(select_id_CriticalityDiagnostics()); return true;
-                       case 3: v(select_id_TimeToWait()); return true;
-                       case 4: if(type != 4) {clear(); asn::base::set();} type = 4; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<Cause>()); return true;
-                       case 2: v(var.as<CriticalityDiagnostics>()); return true;
-                       case 3: v(var.as<TimeToWait>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(Cause)];
-                       char dummy2[sizeof(CriticalityDiagnostics)];
-                       char dummy3[sizeof(TimeToWait)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_Cause() { set(mandatory); type=1;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=2;}
-               void select_id_TimeToWait() { set(optional); type=3;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else if(equal(optional)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ENDCConfigurationUpdateFailure ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{ENDCConfigurationUpdateFailure-IEs}},
-       ...
-}
-*/
-
-struct ENDCConfigurationUpdateFailure : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "ENDCConfigurationUpdateFailure";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<ENDCConfigurationUpdateFailure_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<ENDCConfigurationUpdateFailure_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-ENDCPartialResetConfirm-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-UEs-Admitted-ToBeReset                          CRITICALITY reject      TYPE UEsToBeResetList                           PRESENCE mandatory},
-       ...
-}
-*/
-
-struct ENDCPartialResetConfirm_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_UEs_Admitted_ToBeReset() { set(id_UEs_Admitted_ToBeReset); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_UEs_Admitted_ToBeReset)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_UEs_Admitted_ToBeReset);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_UEs_Admitted_ToBeReset() { set(reject); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UEsToBeResetList& select_id_UEs_Admitted_ToBeReset() { return set<UEsToBeResetList>(1); }
-               UEsToBeResetList const* get_id_UEs_Admitted_ToBeReset() const { return get<UEsToBeResetList>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UEsToBeResetList>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UEsToBeResetList>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_UEs_Admitted_ToBeReset()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UEsToBeResetList>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(UEsToBeResetList)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_UEs_Admitted_ToBeReset() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ENDCPartialResetConfirm ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{ENDCPartialResetConfirm-IEs}},
-       ...
-}
-*/
-
-struct ENDCPartialResetConfirm : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "ENDCPartialResetConfirm";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<ENDCPartialResetConfirm_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<ENDCPartialResetConfirm_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-ENDCPartialResetRequired-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-UEs-ToBeReset                           CRITICALITY reject      TYPE UEsToBeResetList                                   PRESENCE mandatory}|
-       { ID id-Cause                                           CRITICALITY ignore      TYPE Cause                                                              PRESENCE mandatory },
-       ...
-}
-*/
-
-struct ENDCPartialResetRequired_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_UEs_ToBeReset() { set(id_UEs_ToBeReset); type=1;}
-               void select_id_Cause() { set(id_Cause); type=2;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_UEs_ToBeReset)) { type = 1; return true; }
-                       else if(equal(id_Cause)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_UEs_ToBeReset);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_Cause);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_UEs_ToBeReset() { set(reject); type=1;}
-               void select_id_Cause() { set(ignore); type=2;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UEsToBeResetList& select_id_UEs_ToBeReset() { return set<UEsToBeResetList>(1); }
-               UEsToBeResetList const* get_id_UEs_ToBeReset() const { return get<UEsToBeResetList>(1); }
-               Cause& select_id_Cause() { return set<Cause>(2); }
-               Cause const* get_id_Cause() const { return get<Cause>(2); }
-               bool is_unknown() const { return type == 3; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UEsToBeResetList>(); break;
-                       case 2: var.destroy<Cause>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UEsToBeResetList>(1);
-                       v.template operator()<Cause>(2);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_UEs_ToBeReset()); return true;
-                       case 2: v(select_id_Cause()); return true;
-                       case 3: if(type != 3) {clear(); asn::base::set();} type = 3; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UEsToBeResetList>()); return true;
-                       case 2: v(var.as<Cause>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(Cause)];
-                       char dummy2[sizeof(UEsToBeResetList)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_UEs_ToBeReset() { set(mandatory); type=1;}
-               void select_id_Cause() { set(mandatory); type=2;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ENDCPartialResetRequired ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{ENDCPartialResetRequired-IEs}},
-       ...
-}
-*/
-
-struct ENDCPartialResetRequired : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "ENDCPartialResetRequired";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<ENDCPartialResetRequired_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<ENDCPartialResetRequired_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-ENDCX2RemovalFailure-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-Cause                                   CRITICALITY ignore              TYPE Cause                                                              PRESENCE mandatory} |
-       { ID id-CriticalityDiagnostics  CRITICALITY ignore              TYPE CriticalityDiagnostics                             PRESENCE optional },
-       ...
-}
-*/
-
-struct ENDCX2RemovalFailure_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_Cause() { set(id_Cause); type=1;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=2;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_Cause)) { type = 1; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_Cause);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_Cause() { set(ignore); type=1;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=2;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               Cause& select_id_Cause() { return set<Cause>(1); }
-               Cause const* get_id_Cause() const { return get<Cause>(1); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(2); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(2); }
-               bool is_unknown() const { return type == 3; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<Cause>(); break;
-                       case 2: var.destroy<CriticalityDiagnostics>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<Cause>(1);
-                       v.template operator()<CriticalityDiagnostics>(2);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_Cause()); return true;
-                       case 2: v(select_id_CriticalityDiagnostics()); return true;
-                       case 3: if(type != 3) {clear(); asn::base::set();} type = 3; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<Cause>()); return true;
-                       case 2: v(var.as<CriticalityDiagnostics>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(Cause)];
-                       char dummy2[sizeof(CriticalityDiagnostics)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_Cause() { set(mandatory); type=1;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=2;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ENDCX2RemovalFailure ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{ENDCX2RemovalFailure-IEs}},
-       ...
-}
-*/
-
-struct ENDCX2RemovalFailure : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "ENDCX2RemovalFailure";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<ENDCX2RemovalFailure_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<ENDCX2RemovalFailure_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-En-gNB-ENDCX2RemovalReqIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-Globalen-gNB-ID                                                 CRITICALITY reject      TYPE GlobalGNB-ID                                                                               PRESENCE mandatory},
-       ...
-}
-*/
-
-struct En_gNB_ENDCX2RemovalReqIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_Globalen_gNB_ID() { set(id_Globalen_gNB_ID); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_Globalen_gNB_ID)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_Globalen_gNB_ID);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_Globalen_gNB_ID() { set(reject); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               GlobalGNB_ID& select_id_Globalen_gNB_ID() { return set<GlobalGNB_ID>(1); }
-               GlobalGNB_ID const* get_id_Globalen_gNB_ID() const { return get<GlobalGNB_ID>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<GlobalGNB_ID>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<GlobalGNB_ID>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_Globalen_gNB_ID()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<GlobalGNB_ID>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(GlobalGNB_ID)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_Globalen_gNB_ID() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-InitiatingNodeType-EndcX2Removal ::= CHOICE {
-       init-eNB                                ProtocolIE-Container    {{ENB-ENDCX2RemovalReqIEs}},
-       init-en-gNB                     ProtocolIE-Container    {{En-gNB-ENDCX2RemovalReqIEs}},
-       ...
-}
-*/
-
-struct InitiatingNodeType_EndcX2Removal : asn::choice<2, 0, true>
-{
-       static constexpr const char* name() {return "InitiatingNodeType-EndcX2Removal";}
-       using parent_t = asn::choice<2, 0, true>;
-       index_type get_index() const {return index;}
-       bool is_unknown() const {return index == 3;}
-       void set_unknown() { set_index(3);  }
-       ~InitiatingNodeType_EndcX2Removal() {clear();}
-       struct init_eNB_t : ProtocolIE_Container<ENB_ENDCX2RemovalReqIEs>
-       {
-               static constexpr const char* name() {return "init_eNB_t";}
-               using parent_t = ProtocolIE_Container<ENB_ENDCX2RemovalReqIEs>;
-
-       };
-       struct init_en_gNB_t : ProtocolIE_Container<En_gNB_ENDCX2RemovalReqIEs>
-       {
-               static constexpr const char* name() {return "init_en_gNB_t";}
-               using parent_t = ProtocolIE_Container<En_gNB_ENDCX2RemovalReqIEs>;
-
-       };
-       void clear()
-       {
-               switch(get_index())
-               {
-               case 1: var.destroy<init_eNB_t>(); break;
-               case 2: var.destroy<init_en_gNB_t>(); break;
-               }
-               index = 0;
-               base::clear();
-       }
-       template<typename V> bool decode(size_t idx, V& v)
-       {
-               clear();
-               switch(idx)
-               {
-               case 1: set_index(1); return v(var.build<init_eNB_t>());
-               case 2: set_index(2); return v(var.build<init_en_gNB_t>());
-               }
-               return false;
-
-       }
-       template<typename V> bool encode(V& v) const
-       {
-               switch(get_index())
-               {
-               case 1: return v(var.as<init_eNB_t>());
-               case 2: return v(var.as<init_en_gNB_t>());
-               }
-               return false;
-       }
-       template<typename V> static inline void enumerate(V& v)
-       {
-               v.template operator()<init_eNB_t>(1);
-               v.template operator()<init_en_gNB_t>(2);
-
-       }
-       init_eNB_t& select_init_eNB() { if(get_index() != 1) { clear(); set_index(1); return var.build<init_eNB_t>();} return var.as<init_eNB_t>();}
-       init_eNB_t const* get_init_eNB() const { if(get_index() == 1) { return &var.as<init_eNB_t>();} return nullptr; }
-       init_en_gNB_t& select_init_en_gNB() { if(get_index() != 2) { clear(); set_index(2); return var.build<init_en_gNB_t>();} return var.as<init_en_gNB_t>();}
-       init_en_gNB_t const* get_init_en_gNB() const { if(get_index() == 2) { return &var.as<init_en_gNB_t>();} return nullptr; }
-       private:
-       void set_index(index_type i) {index = i; base::set();}
-       union union_type
-       {
-               char dummy1[sizeof(init_eNB_t)];
-               char dummy2[sizeof(init_en_gNB_t)];
-
-       };
-       asn::variant<sizeof(union_type)>        var;
-       index_type      index {0};
-};
-/*
-ENDCX2RemovalRequest-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-InitiatingNodeType-EndcX2Removal                        CRITICALITY reject      TYPE InitiatingNodeType-EndcX2Removal           PRESENCE mandatory},
-       ...
-}
-*/
-
-struct ENDCX2RemovalRequest_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_InitiatingNodeType_EndcX2Removal() { set(id_InitiatingNodeType_EndcX2Removal); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_InitiatingNodeType_EndcX2Removal)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_InitiatingNodeType_EndcX2Removal);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_InitiatingNodeType_EndcX2Removal() { set(reject); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               InitiatingNodeType_EndcX2Removal& select_id_InitiatingNodeType_EndcX2Removal() { return set<InitiatingNodeType_EndcX2Removal>(1); }
-               InitiatingNodeType_EndcX2Removal const* get_id_InitiatingNodeType_EndcX2Removal() const { return get<InitiatingNodeType_EndcX2Removal>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<InitiatingNodeType_EndcX2Removal>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<InitiatingNodeType_EndcX2Removal>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_InitiatingNodeType_EndcX2Removal()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<InitiatingNodeType_EndcX2Removal>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(InitiatingNodeType_EndcX2Removal)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_InitiatingNodeType_EndcX2Removal() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ENDCX2RemovalRequest ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{ENDCX2RemovalRequest-IEs}},
-       ...
-}
-*/
-
-struct ENDCX2RemovalRequest : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "ENDCX2RemovalRequest";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<ENDCX2RemovalRequest_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<ENDCX2RemovalRequest_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-En-gNB-ENDCX2RemovalReqAckIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-Globalen-gNB-ID                                                 CRITICALITY reject      TYPE GlobalGNB-ID                                                                               PRESENCE mandatory},
-       ...
-}
-*/
-
-struct En_gNB_ENDCX2RemovalReqAckIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_Globalen_gNB_ID() { set(id_Globalen_gNB_ID); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_Globalen_gNB_ID)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_Globalen_gNB_ID);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_Globalen_gNB_ID() { set(reject); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               GlobalGNB_ID& select_id_Globalen_gNB_ID() { return set<GlobalGNB_ID>(1); }
-               GlobalGNB_ID const* get_id_Globalen_gNB_ID() const { return get<GlobalGNB_ID>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<GlobalGNB_ID>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<GlobalGNB_ID>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_Globalen_gNB_ID()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<GlobalGNB_ID>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(GlobalGNB_ID)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_Globalen_gNB_ID() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-RespondingNodeType-EndcX2Removal ::= CHOICE {
-       respond-eNB                     ProtocolIE-Container    {{ENB-ENDCX2RemovalReqAckIEs}},
-       respond-en-gNB          ProtocolIE-Container    {{En-gNB-ENDCX2RemovalReqAckIEs}},
-       ...
-}
-*/
-
-struct RespondingNodeType_EndcX2Removal : asn::choice<2, 0, true>
-{
-       static constexpr const char* name() {return "RespondingNodeType-EndcX2Removal";}
-       using parent_t = asn::choice<2, 0, true>;
-       index_type get_index() const {return index;}
-       bool is_unknown() const {return index == 3;}
-       void set_unknown() { set_index(3);  }
-       ~RespondingNodeType_EndcX2Removal() {clear();}
-       struct respond_eNB_t : ProtocolIE_Container<ENB_ENDCX2RemovalReqAckIEs>
-       {
-               static constexpr const char* name() {return "respond_eNB_t";}
-               using parent_t = ProtocolIE_Container<ENB_ENDCX2RemovalReqAckIEs>;
-
-       };
-       struct respond_en_gNB_t : ProtocolIE_Container<En_gNB_ENDCX2RemovalReqAckIEs>
-       {
-               static constexpr const char* name() {return "respond_en_gNB_t";}
-               using parent_t = ProtocolIE_Container<En_gNB_ENDCX2RemovalReqAckIEs>;
-
-       };
-       void clear()
-       {
-               switch(get_index())
-               {
-               case 1: var.destroy<respond_eNB_t>(); break;
-               case 2: var.destroy<respond_en_gNB_t>(); break;
-               }
-               index = 0;
-               base::clear();
-       }
-       template<typename V> bool decode(size_t idx, V& v)
-       {
-               clear();
-               switch(idx)
-               {
-               case 1: set_index(1); return v(var.build<respond_eNB_t>());
-               case 2: set_index(2); return v(var.build<respond_en_gNB_t>());
-               }
-               return false;
-
-       }
-       template<typename V> bool encode(V& v) const
-       {
-               switch(get_index())
-               {
-               case 1: return v(var.as<respond_eNB_t>());
-               case 2: return v(var.as<respond_en_gNB_t>());
-               }
-               return false;
-       }
-       template<typename V> static inline void enumerate(V& v)
-       {
-               v.template operator()<respond_eNB_t>(1);
-               v.template operator()<respond_en_gNB_t>(2);
-
-       }
-       respond_eNB_t& select_respond_eNB() { if(get_index() != 1) { clear(); set_index(1); return var.build<respond_eNB_t>();} return var.as<respond_eNB_t>();}
-       respond_eNB_t const* get_respond_eNB() const { if(get_index() == 1) { return &var.as<respond_eNB_t>();} return nullptr; }
-       respond_en_gNB_t& select_respond_en_gNB() { if(get_index() != 2) { clear(); set_index(2); return var.build<respond_en_gNB_t>();} return var.as<respond_en_gNB_t>();}
-       respond_en_gNB_t const* get_respond_en_gNB() const { if(get_index() == 2) { return &var.as<respond_en_gNB_t>();} return nullptr; }
-       private:
-       void set_index(index_type i) {index = i; base::set();}
-       union union_type
-       {
-               char dummy1[sizeof(respond_eNB_t)];
-               char dummy2[sizeof(respond_en_gNB_t)];
-
-       };
-       asn::variant<sizeof(union_type)>        var;
-       index_type      index {0};
-};
-/*
-ENDCX2RemovalResponse-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-RespondingNodeType-EndcX2Removal                CRITICALITY reject      TYPE RespondingNodeType-EndcX2Removal           PRESENCE mandatory},
-       ...
-}
-*/
-
-struct ENDCX2RemovalResponse_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_RespondingNodeType_EndcX2Removal() { set(id_RespondingNodeType_EndcX2Removal); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_RespondingNodeType_EndcX2Removal)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_RespondingNodeType_EndcX2Removal);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_RespondingNodeType_EndcX2Removal() { set(reject); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               RespondingNodeType_EndcX2Removal& select_id_RespondingNodeType_EndcX2Removal() { return set<RespondingNodeType_EndcX2Removal>(1); }
-               RespondingNodeType_EndcX2Removal const* get_id_RespondingNodeType_EndcX2Removal() const { return get<RespondingNodeType_EndcX2Removal>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<RespondingNodeType_EndcX2Removal>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<RespondingNodeType_EndcX2Removal>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_RespondingNodeType_EndcX2Removal()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<RespondingNodeType_EndcX2Removal>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(RespondingNodeType_EndcX2Removal)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_RespondingNodeType_EndcX2Removal() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ENDCX2RemovalResponse ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{ENDCX2RemovalResponse-IEs}},
-       ...
-}
-*/
-
-struct ENDCX2RemovalResponse : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "ENDCX2RemovalResponse";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<ENDCX2RemovalResponse_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<ENDCX2RemovalResponse_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-ENDCX2SetupFailure-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-Cause                                   CRITICALITY ignore              TYPE Cause                                                              PRESENCE mandatory} |
-       { ID id-CriticalityDiagnostics  CRITICALITY ignore              TYPE CriticalityDiagnostics                             PRESENCE optional } |
-       { ID id-TimeToWait                              CRITICALITY ignore              TYPE TimeToWait                                                 PRESENCE optional       },
-       ...
-}
-*/
-
-struct ENDCX2SetupFailure_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_Cause() { set(id_Cause); type=1;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=2;}
-               void select_id_TimeToWait() { set(id_TimeToWait); type=3;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_Cause)) { type = 1; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 2; return true; }
-                       else if(equal(id_TimeToWait)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_Cause);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_TimeToWait);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_Cause() { set(ignore); type=1;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=2;}
-               void select_id_TimeToWait() { set(ignore); type=3;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               Cause& select_id_Cause() { return set<Cause>(1); }
-               Cause const* get_id_Cause() const { return get<Cause>(1); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(2); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(2); }
-               TimeToWait& select_id_TimeToWait() { return set<TimeToWait>(3); }
-               TimeToWait const* get_id_TimeToWait() const { return get<TimeToWait>(3); }
-               bool is_unknown() const { return type == 4; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<Cause>(); break;
-                       case 2: var.destroy<CriticalityDiagnostics>(); break;
-                       case 3: var.destroy<TimeToWait>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<Cause>(1);
-                       v.template operator()<CriticalityDiagnostics>(2);
-                       v.template operator()<TimeToWait>(3);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_Cause()); return true;
-                       case 2: v(select_id_CriticalityDiagnostics()); return true;
-                       case 3: v(select_id_TimeToWait()); return true;
-                       case 4: if(type != 4) {clear(); asn::base::set();} type = 4; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<Cause>()); return true;
-                       case 2: v(var.as<CriticalityDiagnostics>()); return true;
-                       case 3: v(var.as<TimeToWait>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(Cause)];
-                       char dummy2[sizeof(CriticalityDiagnostics)];
-                       char dummy3[sizeof(TimeToWait)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_Cause() { set(mandatory); type=1;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=2;}
-               void select_id_TimeToWait() { set(optional); type=3;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else if(equal(optional)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ENDCX2SetupFailure ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{ENDCX2SetupFailure-IEs}},
-       ...
-}
-*/
-
-struct ENDCX2SetupFailure : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "ENDCX2SetupFailure";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<ENDCX2SetupFailure_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<ENDCX2SetupFailure_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-En-gNB-ENDCX2SetupReqIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-Globalen-gNB-ID                                                 CRITICALITY reject      TYPE GlobalGNB-ID                                                                               PRESENCE mandatory}|
-       { ID id-ServedNRcellsENDCX2ManagementList               CRITICALITY reject      TYPE ServedNRcellsENDCX2ManagementList                  PRESENCE mandatory},
-       ...
-}
-*/
-
-struct En_gNB_ENDCX2SetupReqIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_Globalen_gNB_ID() { set(id_Globalen_gNB_ID); type=1;}
-               void select_id_ServedNRcellsENDCX2ManagementList() { set(id_ServedNRcellsENDCX2ManagementList); type=2;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_Globalen_gNB_ID)) { type = 1; return true; }
-                       else if(equal(id_ServedNRcellsENDCX2ManagementList)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_Globalen_gNB_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_ServedNRcellsENDCX2ManagementList);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_Globalen_gNB_ID() { set(reject); type=1;}
-               void select_id_ServedNRcellsENDCX2ManagementList() { set(reject); type=2;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               GlobalGNB_ID& select_id_Globalen_gNB_ID() { return set<GlobalGNB_ID>(1); }
-               GlobalGNB_ID const* get_id_Globalen_gNB_ID() const { return get<GlobalGNB_ID>(1); }
-               ServedNRcellsENDCX2ManagementList& select_id_ServedNRcellsENDCX2ManagementList() { return set<ServedNRcellsENDCX2ManagementList>(2); }
-               ServedNRcellsENDCX2ManagementList const* get_id_ServedNRcellsENDCX2ManagementList() const { return get<ServedNRcellsENDCX2ManagementList>(2); }
-               bool is_unknown() const { return type == 3; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<GlobalGNB_ID>(); break;
-                       case 2: var.destroy<ServedNRcellsENDCX2ManagementList>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<GlobalGNB_ID>(1);
-                       v.template operator()<ServedNRcellsENDCX2ManagementList>(2);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_Globalen_gNB_ID()); return true;
-                       case 2: v(select_id_ServedNRcellsENDCX2ManagementList()); return true;
-                       case 3: if(type != 3) {clear(); asn::base::set();} type = 3; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<GlobalGNB_ID>()); return true;
-                       case 2: v(var.as<ServedNRcellsENDCX2ManagementList>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(GlobalGNB_ID)];
-                       char dummy2[sizeof(ServedNRcellsENDCX2ManagementList)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_Globalen_gNB_ID() { set(mandatory); type=1;}
-               void select_id_ServedNRcellsENDCX2ManagementList() { set(mandatory); type=2;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-InitiatingNodeType-EndcX2Setup ::= CHOICE {
-       init-eNB                                ProtocolIE-Container    {{ENB-ENDCX2SetupReqIEs}},
-       init-en-gNB                     ProtocolIE-Container    {{En-gNB-ENDCX2SetupReqIEs}},
-       ...
-}
-*/
-
-struct InitiatingNodeType_EndcX2Setup : asn::choice<2, 0, true>
-{
-       static constexpr const char* name() {return "InitiatingNodeType-EndcX2Setup";}
-       using parent_t = asn::choice<2, 0, true>;
-       index_type get_index() const {return index;}
-       bool is_unknown() const {return index == 3;}
-       void set_unknown() { set_index(3);  }
-       ~InitiatingNodeType_EndcX2Setup() {clear();}
-       struct init_eNB_t : ProtocolIE_Container<ENB_ENDCX2SetupReqIEs>
-       {
-               static constexpr const char* name() {return "init_eNB_t";}
-               using parent_t = ProtocolIE_Container<ENB_ENDCX2SetupReqIEs>;
-
-       };
-       struct init_en_gNB_t : ProtocolIE_Container<En_gNB_ENDCX2SetupReqIEs>
-       {
-               static constexpr const char* name() {return "init_en_gNB_t";}
-               using parent_t = ProtocolIE_Container<En_gNB_ENDCX2SetupReqIEs>;
-
-       };
-       void clear()
-       {
-               switch(get_index())
-               {
-               case 1: var.destroy<init_eNB_t>(); break;
-               case 2: var.destroy<init_en_gNB_t>(); break;
-               }
-               index = 0;
-               base::clear();
-       }
-       template<typename V> bool decode(size_t idx, V& v)
-       {
-               clear();
-               switch(idx)
-               {
-               case 1: set_index(1); return v(var.build<init_eNB_t>());
-               case 2: set_index(2); return v(var.build<init_en_gNB_t>());
-               }
-               return false;
-
-       }
-       template<typename V> bool encode(V& v) const
-       {
-               switch(get_index())
-               {
-               case 1: return v(var.as<init_eNB_t>());
-               case 2: return v(var.as<init_en_gNB_t>());
-               }
-               return false;
-       }
-       template<typename V> static inline void enumerate(V& v)
-       {
-               v.template operator()<init_eNB_t>(1);
-               v.template operator()<init_en_gNB_t>(2);
-
-       }
-       init_eNB_t& select_init_eNB() { if(get_index() != 1) { clear(); set_index(1); return var.build<init_eNB_t>();} return var.as<init_eNB_t>();}
-       init_eNB_t const* get_init_eNB() const { if(get_index() == 1) { return &var.as<init_eNB_t>();} return nullptr; }
-       init_en_gNB_t& select_init_en_gNB() { if(get_index() != 2) { clear(); set_index(2); return var.build<init_en_gNB_t>();} return var.as<init_en_gNB_t>();}
-       init_en_gNB_t const* get_init_en_gNB() const { if(get_index() == 2) { return &var.as<init_en_gNB_t>();} return nullptr; }
-       private:
-       void set_index(index_type i) {index = i; base::set();}
-       union union_type
-       {
-               char dummy1[sizeof(init_eNB_t)];
-               char dummy2[sizeof(init_en_gNB_t)];
-
-       };
-       asn::variant<sizeof(union_type)>        var;
-       index_type      index {0};
-};
-/*
-ENDCX2SetupRequest-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-InitiatingNodeType-EndcX2Setup                  CRITICALITY reject      TYPE InitiatingNodeType-EndcX2Setup             PRESENCE mandatory},
-       ...
-}
-*/
-
-struct ENDCX2SetupRequest_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_InitiatingNodeType_EndcX2Setup() { set(id_InitiatingNodeType_EndcX2Setup); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_InitiatingNodeType_EndcX2Setup)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_InitiatingNodeType_EndcX2Setup);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_InitiatingNodeType_EndcX2Setup() { set(reject); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               InitiatingNodeType_EndcX2Setup& select_id_InitiatingNodeType_EndcX2Setup() { return set<InitiatingNodeType_EndcX2Setup>(1); }
-               InitiatingNodeType_EndcX2Setup const* get_id_InitiatingNodeType_EndcX2Setup() const { return get<InitiatingNodeType_EndcX2Setup>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<InitiatingNodeType_EndcX2Setup>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<InitiatingNodeType_EndcX2Setup>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_InitiatingNodeType_EndcX2Setup()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<InitiatingNodeType_EndcX2Setup>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(InitiatingNodeType_EndcX2Setup)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_InitiatingNodeType_EndcX2Setup() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ENDCX2SetupRequest ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{ENDCX2SetupRequest-IEs}},
-       ...
-}
-*/
-
-struct ENDCX2SetupRequest : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "ENDCX2SetupRequest";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<ENDCX2SetupRequest_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<ENDCX2SetupRequest_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-En-gNB-ENDCX2SetupReqAckIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-Globalen-gNB-ID                                                 CRITICALITY reject      TYPE GlobalGNB-ID                                                                               PRESENCE mandatory}|
-       { ID id-ServedNRcellsENDCX2ManagementList               CRITICALITY reject      TYPE ServedNRcellsENDCX2ManagementList                  PRESENCE mandatory},
-       ...
-}
-*/
-
-struct En_gNB_ENDCX2SetupReqAckIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_Globalen_gNB_ID() { set(id_Globalen_gNB_ID); type=1;}
-               void select_id_ServedNRcellsENDCX2ManagementList() { set(id_ServedNRcellsENDCX2ManagementList); type=2;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_Globalen_gNB_ID)) { type = 1; return true; }
-                       else if(equal(id_ServedNRcellsENDCX2ManagementList)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_Globalen_gNB_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_ServedNRcellsENDCX2ManagementList);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_Globalen_gNB_ID() { set(reject); type=1;}
-               void select_id_ServedNRcellsENDCX2ManagementList() { set(reject); type=2;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               GlobalGNB_ID& select_id_Globalen_gNB_ID() { return set<GlobalGNB_ID>(1); }
-               GlobalGNB_ID const* get_id_Globalen_gNB_ID() const { return get<GlobalGNB_ID>(1); }
-               ServedNRcellsENDCX2ManagementList& select_id_ServedNRcellsENDCX2ManagementList() { return set<ServedNRcellsENDCX2ManagementList>(2); }
-               ServedNRcellsENDCX2ManagementList const* get_id_ServedNRcellsENDCX2ManagementList() const { return get<ServedNRcellsENDCX2ManagementList>(2); }
-               bool is_unknown() const { return type == 3; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<GlobalGNB_ID>(); break;
-                       case 2: var.destroy<ServedNRcellsENDCX2ManagementList>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<GlobalGNB_ID>(1);
-                       v.template operator()<ServedNRcellsENDCX2ManagementList>(2);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_Globalen_gNB_ID()); return true;
-                       case 2: v(select_id_ServedNRcellsENDCX2ManagementList()); return true;
-                       case 3: if(type != 3) {clear(); asn::base::set();} type = 3; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<GlobalGNB_ID>()); return true;
-                       case 2: v(var.as<ServedNRcellsENDCX2ManagementList>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(GlobalGNB_ID)];
-                       char dummy2[sizeof(ServedNRcellsENDCX2ManagementList)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_Globalen_gNB_ID() { set(mandatory); type=1;}
-               void select_id_ServedNRcellsENDCX2ManagementList() { set(mandatory); type=2;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-RespondingNodeType-EndcX2Setup ::= CHOICE {
-       respond-eNB                     ProtocolIE-Container    {{ENB-ENDCX2SetupReqAckIEs}},
-       respond-en-gNB          ProtocolIE-Container    {{En-gNB-ENDCX2SetupReqAckIEs}},
-       ...
-}
-*/
-
-struct RespondingNodeType_EndcX2Setup : asn::choice<2, 0, true>
-{
-       static constexpr const char* name() {return "RespondingNodeType-EndcX2Setup";}
-       using parent_t = asn::choice<2, 0, true>;
-       index_type get_index() const {return index;}
-       bool is_unknown() const {return index == 3;}
-       void set_unknown() { set_index(3);  }
-       ~RespondingNodeType_EndcX2Setup() {clear();}
-       struct respond_eNB_t : ProtocolIE_Container<ENB_ENDCX2SetupReqAckIEs>
-       {
-               static constexpr const char* name() {return "respond_eNB_t";}
-               using parent_t = ProtocolIE_Container<ENB_ENDCX2SetupReqAckIEs>;
-
-       };
-       struct respond_en_gNB_t : ProtocolIE_Container<En_gNB_ENDCX2SetupReqAckIEs>
-       {
-               static constexpr const char* name() {return "respond_en_gNB_t";}
-               using parent_t = ProtocolIE_Container<En_gNB_ENDCX2SetupReqAckIEs>;
-
-       };
-       void clear()
-       {
-               switch(get_index())
-               {
-               case 1: var.destroy<respond_eNB_t>(); break;
-               case 2: var.destroy<respond_en_gNB_t>(); break;
-               }
-               index = 0;
-               base::clear();
-       }
-       template<typename V> bool decode(size_t idx, V& v)
-       {
-               clear();
-               switch(idx)
-               {
-               case 1: set_index(1); return v(var.build<respond_eNB_t>());
-               case 2: set_index(2); return v(var.build<respond_en_gNB_t>());
-               }
-               return false;
-
-       }
-       template<typename V> bool encode(V& v) const
-       {
-               switch(get_index())
-               {
-               case 1: return v(var.as<respond_eNB_t>());
-               case 2: return v(var.as<respond_en_gNB_t>());
-               }
-               return false;
-       }
-       template<typename V> static inline void enumerate(V& v)
-       {
-               v.template operator()<respond_eNB_t>(1);
-               v.template operator()<respond_en_gNB_t>(2);
-
-       }
-       respond_eNB_t& select_respond_eNB() { if(get_index() != 1) { clear(); set_index(1); return var.build<respond_eNB_t>();} return var.as<respond_eNB_t>();}
-       respond_eNB_t const* get_respond_eNB() const { if(get_index() == 1) { return &var.as<respond_eNB_t>();} return nullptr; }
-       respond_en_gNB_t& select_respond_en_gNB() { if(get_index() != 2) { clear(); set_index(2); return var.build<respond_en_gNB_t>();} return var.as<respond_en_gNB_t>();}
-       respond_en_gNB_t const* get_respond_en_gNB() const { if(get_index() == 2) { return &var.as<respond_en_gNB_t>();} return nullptr; }
-       private:
-       void set_index(index_type i) {index = i; base::set();}
-       union union_type
-       {
-               char dummy1[sizeof(respond_eNB_t)];
-               char dummy2[sizeof(respond_en_gNB_t)];
-
-       };
-       asn::variant<sizeof(union_type)>        var;
-       index_type      index {0};
-};
-/*
-ENDCX2SetupResponse-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-RespondingNodeType-EndcX2Setup          CRITICALITY reject      TYPE RespondingNodeType-EndcX2Setup             PRESENCE mandatory},
-       ...
-}
-*/
-
-struct ENDCX2SetupResponse_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_RespondingNodeType_EndcX2Setup() { set(id_RespondingNodeType_EndcX2Setup); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_RespondingNodeType_EndcX2Setup)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_RespondingNodeType_EndcX2Setup);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_RespondingNodeType_EndcX2Setup() { set(reject); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               RespondingNodeType_EndcX2Setup& select_id_RespondingNodeType_EndcX2Setup() { return set<RespondingNodeType_EndcX2Setup>(1); }
-               RespondingNodeType_EndcX2Setup const* get_id_RespondingNodeType_EndcX2Setup() const { return get<RespondingNodeType_EndcX2Setup>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<RespondingNodeType_EndcX2Setup>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<RespondingNodeType_EndcX2Setup>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_RespondingNodeType_EndcX2Setup()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<RespondingNodeType_EndcX2Setup>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(RespondingNodeType_EndcX2Setup)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_RespondingNodeType_EndcX2Setup() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ENDCX2SetupResponse ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{ENDCX2SetupResponse-IEs}},
-       ...
-}
-*/
-
-struct ENDCX2SetupResponse : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "ENDCX2SetupResponse";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<ENDCX2SetupResponse_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<ENDCX2SetupResponse_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-ListofEUTRACellsinNRCoordinationReq ::= SEQUENCE (SIZE (1..maxCellineNB)) OF ECGI
-*/
-
-struct ListofEUTRACellsinNRCoordinationReq_elm : ECGI
-{
-       static constexpr const char* name() {return "ListofEUTRACellsinNRCoordinationReq_elm";}
-       using parent_t = ECGI;
-
-};
-struct ListofEUTRACellsinNRCoordinationReq : asn::sequenceof<ListofEUTRACellsinNRCoordinationReq_elm>
-{
-       static constexpr const char* name() {return "ListofEUTRACellsinNRCoordinationReq";}
-       using parent_t = asn::sequenceof<ListofEUTRACellsinNRCoordinationReq_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxCellineNB >>;
-
-};
-/*
-ListofNRCellsinNRCoordinationReq ::= SEQUENCE (SIZE (0..maxnoNRcellsSpectrumSharingWithE-UTRA)) OF NRCGI
-*/
-
-struct ListofNRCellsinNRCoordinationReq_elm : NRCGI
-{
-       static constexpr const char* name() {return "ListofNRCellsinNRCoordinationReq_elm";}
-       using parent_t = NRCGI;
-
-};
-struct ListofNRCellsinNRCoordinationReq : asn::sequenceof<ListofNRCellsinNRCoordinationReq_elm>
-{
-       static constexpr const char* name() {return "ListofNRCellsinNRCoordinationReq";}
-       using parent_t = asn::sequenceof<ListofNRCellsinNRCoordinationReq_elm>;
-       using constraint_t = asn::constraints<false,asn::span<0,  maxnoNRcellsSpectrumSharingWithE_UTRA >>;
-
-};
-/*
-En-gNB-EUTRA-NRCellResourceCoordinationReqIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-DataTrafficResourceIndication                   CRITICALITY reject      TYPE DataTrafficResourceIndication                              PRESENCE mandatory}|
-       { ID id-ListofEUTRACellsinNRCoordinationReq             CRITICALITY reject      TYPE ListofEUTRACellsinNRCoordinationReq                PRESENCE mandatory }|
-       { ID id-SpectrumSharingGroupID                                  CRITICALITY reject      TYPE SpectrumSharingGroupID                                             PRESENCE mandatory}|
-       { ID id-ListofNRCellsinNRCoordinationReq                CRITICALITY reject      TYPE ListofNRCellsinNRCoordinationReq                   PRESENCE mandatory},
-       ...
-}
-*/
-
-struct En_gNB_EUTRA_NRCellResourceCoordinationReqIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 5; }
-               void clear() {type = 0;}
-               void select_id_DataTrafficResourceIndication() { set(id_DataTrafficResourceIndication); type=1;}
-               void select_id_ListofEUTRACellsinNRCoordinationReq() { set(id_ListofEUTRACellsinNRCoordinationReq); type=2;}
-               void select_id_SpectrumSharingGroupID() { set(id_SpectrumSharingGroupID); type=3;}
-               void select_id_ListofNRCellsinNRCoordinationReq() { set(id_ListofNRCellsinNRCoordinationReq); type=4;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_DataTrafficResourceIndication)) { type = 1; return true; }
-                       else if(equal(id_ListofEUTRACellsinNRCoordinationReq)) { type = 2; return true; }
-                       else if(equal(id_SpectrumSharingGroupID)) { type = 3; return true; }
-                       else if(equal(id_ListofNRCellsinNRCoordinationReq)) { type = 4; return true; }
-                       else { type = 5; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_DataTrafficResourceIndication);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_ListofEUTRACellsinNRCoordinationReq);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_SpectrumSharingGroupID);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_ListofNRCellsinNRCoordinationReq);} return false;
-                       case 5: type = 5; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 5; }
-               void clear() {type = 0;}
-               void select_id_DataTrafficResourceIndication() { set(reject); type=1;}
-               void select_id_ListofEUTRACellsinNRCoordinationReq() { set(reject); type=2;}
-               void select_id_SpectrumSharingGroupID() { set(reject); type=3;}
-               void select_id_ListofNRCellsinNRCoordinationReq() { set(reject); type=4;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(reject)) { type = 3; return true; }
-                       else if(equal(reject)) { type = 4; return true; }
-                       else { type = 5; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 5: type = 5; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               DataTrafficResourceIndication& select_id_DataTrafficResourceIndication() { return set<DataTrafficResourceIndication>(1); }
-               DataTrafficResourceIndication const* get_id_DataTrafficResourceIndication() const { return get<DataTrafficResourceIndication>(1); }
-               ListofEUTRACellsinNRCoordinationReq& select_id_ListofEUTRACellsinNRCoordinationReq() { return set<ListofEUTRACellsinNRCoordinationReq>(2); }
-               ListofEUTRACellsinNRCoordinationReq const* get_id_ListofEUTRACellsinNRCoordinationReq() const { return get<ListofEUTRACellsinNRCoordinationReq>(2); }
-               SpectrumSharingGroupID& select_id_SpectrumSharingGroupID() { return set<SpectrumSharingGroupID>(3); }
-               SpectrumSharingGroupID const* get_id_SpectrumSharingGroupID() const { return get<SpectrumSharingGroupID>(3); }
-               ListofNRCellsinNRCoordinationReq& select_id_ListofNRCellsinNRCoordinationReq() { return set<ListofNRCellsinNRCoordinationReq>(4); }
-               ListofNRCellsinNRCoordinationReq const* get_id_ListofNRCellsinNRCoordinationReq() const { return get<ListofNRCellsinNRCoordinationReq>(4); }
-               bool is_unknown() const { return type == 5; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<DataTrafficResourceIndication>(); break;
-                       case 2: var.destroy<ListofEUTRACellsinNRCoordinationReq>(); break;
-                       case 3: var.destroy<SpectrumSharingGroupID>(); break;
-                       case 4: var.destroy<ListofNRCellsinNRCoordinationReq>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<DataTrafficResourceIndication>(1);
-                       v.template operator()<ListofEUTRACellsinNRCoordinationReq>(2);
-                       v.template operator()<SpectrumSharingGroupID>(3);
-                       v.template operator()<ListofNRCellsinNRCoordinationReq>(4);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_DataTrafficResourceIndication()); return true;
-                       case 2: v(select_id_ListofEUTRACellsinNRCoordinationReq()); return true;
-                       case 3: v(select_id_SpectrumSharingGroupID()); return true;
-                       case 4: v(select_id_ListofNRCellsinNRCoordinationReq()); return true;
-                       case 5: if(type != 5) {clear(); asn::base::set();} type = 5; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<DataTrafficResourceIndication>()); return true;
-                       case 2: v(var.as<ListofEUTRACellsinNRCoordinationReq>()); return true;
-                       case 3: v(var.as<SpectrumSharingGroupID>()); return true;
-                       case 4: v(var.as<ListofNRCellsinNRCoordinationReq>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(DataTrafficResourceIndication)];
-                       char dummy2[sizeof(ListofEUTRACellsinNRCoordinationReq)];
-                       char dummy3[sizeof(ListofNRCellsinNRCoordinationReq)];
-                       char dummy4[sizeof(SpectrumSharingGroupID)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 5; }
-               void clear() {type = 0;}
-               void select_id_DataTrafficResourceIndication() { set(mandatory); type=1;}
-               void select_id_ListofEUTRACellsinNRCoordinationReq() { set(mandatory); type=2;}
-               void select_id_SpectrumSharingGroupID() { set(mandatory); type=3;}
-               void select_id_ListofNRCellsinNRCoordinationReq() { set(mandatory); type=4;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else if(equal(mandatory)) { type = 4; return true; }
-                       else { type = 5; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 5: type = 5; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-InitiatingNodeType-EutranrCellResourceCoordination ::= CHOICE {
-       initiate-eNB                    ProtocolIE-Container    {{ENB-EUTRA-NRCellResourceCoordinationReqIEs}},
-       initiate-en-gNB                 ProtocolIE-Container    {{En-gNB-EUTRA-NRCellResourceCoordinationReqIEs}},
-       ...
-}
-*/
-
-struct InitiatingNodeType_EutranrCellResourceCoordination : asn::choice<2, 0, true>
-{
-       static constexpr const char* name() {return "InitiatingNodeType-EutranrCellResourceCoordination";}
-       using parent_t = asn::choice<2, 0, true>;
-       index_type get_index() const {return index;}
-       bool is_unknown() const {return index == 3;}
-       void set_unknown() { set_index(3);  }
-       ~InitiatingNodeType_EutranrCellResourceCoordination() {clear();}
-       struct initiate_eNB_t : ProtocolIE_Container<ENB_EUTRA_NRCellResourceCoordinationReqIEs>
-       {
-               static constexpr const char* name() {return "initiate_eNB_t";}
-               using parent_t = ProtocolIE_Container<ENB_EUTRA_NRCellResourceCoordinationReqIEs>;
-
-       };
-       struct initiate_en_gNB_t : ProtocolIE_Container<En_gNB_EUTRA_NRCellResourceCoordinationReqIEs>
-       {
-               static constexpr const char* name() {return "initiate_en_gNB_t";}
-               using parent_t = ProtocolIE_Container<En_gNB_EUTRA_NRCellResourceCoordinationReqIEs>;
-
-       };
-       void clear()
-       {
-               switch(get_index())
-               {
-               case 1: var.destroy<initiate_eNB_t>(); break;
-               case 2: var.destroy<initiate_en_gNB_t>(); break;
-               }
-               index = 0;
-               base::clear();
-       }
-       template<typename V> bool decode(size_t idx, V& v)
-       {
-               clear();
-               switch(idx)
-               {
-               case 1: set_index(1); return v(var.build<initiate_eNB_t>());
-               case 2: set_index(2); return v(var.build<initiate_en_gNB_t>());
-               }
-               return false;
-
-       }
-       template<typename V> bool encode(V& v) const
-       {
-               switch(get_index())
-               {
-               case 1: return v(var.as<initiate_eNB_t>());
-               case 2: return v(var.as<initiate_en_gNB_t>());
-               }
-               return false;
-       }
-       template<typename V> static inline void enumerate(V& v)
-       {
-               v.template operator()<initiate_eNB_t>(1);
-               v.template operator()<initiate_en_gNB_t>(2);
-
-       }
-       initiate_eNB_t& select_initiate_eNB() { if(get_index() != 1) { clear(); set_index(1); return var.build<initiate_eNB_t>();} return var.as<initiate_eNB_t>();}
-       initiate_eNB_t const* get_initiate_eNB() const { if(get_index() == 1) { return &var.as<initiate_eNB_t>();} return nullptr; }
-       initiate_en_gNB_t& select_initiate_en_gNB() { if(get_index() != 2) { clear(); set_index(2); return var.build<initiate_en_gNB_t>();} return var.as<initiate_en_gNB_t>();}
-       initiate_en_gNB_t const* get_initiate_en_gNB() const { if(get_index() == 2) { return &var.as<initiate_en_gNB_t>();} return nullptr; }
-       private:
-       void set_index(index_type i) {index = i; base::set();}
-       union union_type
-       {
-               char dummy1[sizeof(initiate_eNB_t)];
-               char dummy2[sizeof(initiate_en_gNB_t)];
-
-       };
-       asn::variant<sizeof(union_type)>        var;
-       index_type      index {0};
-};
-/*
-EUTRANRCellResourceCoordinationRequest-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-InitiatingNodeType-EutranrCellResourceCoordination              CRITICALITY reject      TYPE InitiatingNodeType-EutranrCellResourceCoordination                 PRESENCE mandatory},
-       ...
-}
-*/
-
-struct EUTRANRCellResourceCoordinationRequest_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_InitiatingNodeType_EutranrCellResourceCoordination() { set(id_InitiatingNodeType_EutranrCellResourceCoordination); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_InitiatingNodeType_EutranrCellResourceCoordination)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_InitiatingNodeType_EutranrCellResourceCoordination);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_InitiatingNodeType_EutranrCellResourceCoordination() { set(reject); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               InitiatingNodeType_EutranrCellResourceCoordination& select_id_InitiatingNodeType_EutranrCellResourceCoordination() { return set<InitiatingNodeType_EutranrCellResourceCoordination>(1); }
-               InitiatingNodeType_EutranrCellResourceCoordination const* get_id_InitiatingNodeType_EutranrCellResourceCoordination() const { return get<InitiatingNodeType_EutranrCellResourceCoordination>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<InitiatingNodeType_EutranrCellResourceCoordination>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<InitiatingNodeType_EutranrCellResourceCoordination>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_InitiatingNodeType_EutranrCellResourceCoordination()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<InitiatingNodeType_EutranrCellResourceCoordination>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(InitiatingNodeType_EutranrCellResourceCoordination)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_InitiatingNodeType_EutranrCellResourceCoordination() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-EUTRANRCellResourceCoordinationRequest ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container            {{EUTRANRCellResourceCoordinationRequest-IEs}},
-       ...
-}
-*/
-
-struct EUTRANRCellResourceCoordinationRequest : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "EUTRANRCellResourceCoordinationRequest";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<EUTRANRCellResourceCoordinationRequest_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<EUTRANRCellResourceCoordinationRequest_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-ListofNRCellsinNRCoordinationResp ::= SEQUENCE (SIZE (0..maxnoNRcellsSpectrumSharingWithE-UTRA)) OF NRCGI
-*/
-
-struct ListofNRCellsinNRCoordinationResp_elm : NRCGI
-{
-       static constexpr const char* name() {return "ListofNRCellsinNRCoordinationResp_elm";}
-       using parent_t = NRCGI;
-
-};
-struct ListofNRCellsinNRCoordinationResp : asn::sequenceof<ListofNRCellsinNRCoordinationResp_elm>
-{
-       static constexpr const char* name() {return "ListofNRCellsinNRCoordinationResp";}
-       using parent_t = asn::sequenceof<ListofNRCellsinNRCoordinationResp_elm>;
-       using constraint_t = asn::constraints<false,asn::span<0,  maxnoNRcellsSpectrumSharingWithE_UTRA >>;
-
-};
-/*
-En-gNB-EUTRA-NRCellResourceCoordinationReqAckIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-DataTrafficResourceIndication           CRITICALITY reject      TYPE DataTrafficResourceIndication                      PRESENCE mandatory}|
-       { ID id-SpectrumSharingGroupID                          CRITICALITY reject      TYPE SpectrumSharingGroupID                                     PRESENCE mandatory}|
-       { ID id-ListofNRCellsinNRCoordinationResp       CRITICALITY reject      TYPE ListofNRCellsinNRCoordinationResp          PRESENCE mandatory},
-
-
-       ...
-}
-*/
-
-struct En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_DataTrafficResourceIndication() { set(id_DataTrafficResourceIndication); type=1;}
-               void select_id_SpectrumSharingGroupID() { set(id_SpectrumSharingGroupID); type=2;}
-               void select_id_ListofNRCellsinNRCoordinationResp() { set(id_ListofNRCellsinNRCoordinationResp); type=3;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_DataTrafficResourceIndication)) { type = 1; return true; }
-                       else if(equal(id_SpectrumSharingGroupID)) { type = 2; return true; }
-                       else if(equal(id_ListofNRCellsinNRCoordinationResp)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_DataTrafficResourceIndication);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SpectrumSharingGroupID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_ListofNRCellsinNRCoordinationResp);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_DataTrafficResourceIndication() { set(reject); type=1;}
-               void select_id_SpectrumSharingGroupID() { set(reject); type=2;}
-               void select_id_ListofNRCellsinNRCoordinationResp() { set(reject); type=3;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(reject)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               DataTrafficResourceIndication& select_id_DataTrafficResourceIndication() { return set<DataTrafficResourceIndication>(1); }
-               DataTrafficResourceIndication const* get_id_DataTrafficResourceIndication() const { return get<DataTrafficResourceIndication>(1); }
-               SpectrumSharingGroupID& select_id_SpectrumSharingGroupID() { return set<SpectrumSharingGroupID>(2); }
-               SpectrumSharingGroupID const* get_id_SpectrumSharingGroupID() const { return get<SpectrumSharingGroupID>(2); }
-               ListofNRCellsinNRCoordinationResp& select_id_ListofNRCellsinNRCoordinationResp() { return set<ListofNRCellsinNRCoordinationResp>(3); }
-               ListofNRCellsinNRCoordinationResp const* get_id_ListofNRCellsinNRCoordinationResp() const { return get<ListofNRCellsinNRCoordinationResp>(3); }
-               bool is_unknown() const { return type == 4; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<DataTrafficResourceIndication>(); break;
-                       case 2: var.destroy<SpectrumSharingGroupID>(); break;
-                       case 3: var.destroy<ListofNRCellsinNRCoordinationResp>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<DataTrafficResourceIndication>(1);
-                       v.template operator()<SpectrumSharingGroupID>(2);
-                       v.template operator()<ListofNRCellsinNRCoordinationResp>(3);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_DataTrafficResourceIndication()); return true;
-                       case 2: v(select_id_SpectrumSharingGroupID()); return true;
-                       case 3: v(select_id_ListofNRCellsinNRCoordinationResp()); return true;
-                       case 4: if(type != 4) {clear(); asn::base::set();} type = 4; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<DataTrafficResourceIndication>()); return true;
-                       case 2: v(var.as<SpectrumSharingGroupID>()); return true;
-                       case 3: v(var.as<ListofNRCellsinNRCoordinationResp>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(DataTrafficResourceIndication)];
-                       char dummy2[sizeof(ListofNRCellsinNRCoordinationResp)];
-                       char dummy3[sizeof(SpectrumSharingGroupID)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_DataTrafficResourceIndication() { set(mandatory); type=1;}
-               void select_id_SpectrumSharingGroupID() { set(mandatory); type=2;}
-               void select_id_ListofNRCellsinNRCoordinationResp() { set(mandatory); type=3;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-RespondingNodeType-EutranrCellResourceCoordination ::= CHOICE {
-       respond-eNB                     ProtocolIE-Container    {{ENB-EUTRA-NRCellResourceCoordinationReqAckIEs}},
-       respond-en-gNB          ProtocolIE-Container    {{En-gNB-EUTRA-NRCellResourceCoordinationReqAckIEs}},
-       ...
-}
-*/
-
-struct RespondingNodeType_EutranrCellResourceCoordination : asn::choice<2, 0, true>
-{
-       static constexpr const char* name() {return "RespondingNodeType-EutranrCellResourceCoordination";}
-       using parent_t = asn::choice<2, 0, true>;
-       index_type get_index() const {return index;}
-       bool is_unknown() const {return index == 3;}
-       void set_unknown() { set_index(3);  }
-       ~RespondingNodeType_EutranrCellResourceCoordination() {clear();}
-       struct respond_eNB_t : ProtocolIE_Container<ENB_EUTRA_NRCellResourceCoordinationReqAckIEs>
-       {
-               static constexpr const char* name() {return "respond_eNB_t";}
-               using parent_t = ProtocolIE_Container<ENB_EUTRA_NRCellResourceCoordinationReqAckIEs>;
-
-       };
-       struct respond_en_gNB_t : ProtocolIE_Container<En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs>
-       {
-               static constexpr const char* name() {return "respond_en_gNB_t";}
-               using parent_t = ProtocolIE_Container<En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs>;
-
-       };
-       void clear()
-       {
-               switch(get_index())
-               {
-               case 1: var.destroy<respond_eNB_t>(); break;
-               case 2: var.destroy<respond_en_gNB_t>(); break;
-               }
-               index = 0;
-               base::clear();
-       }
-       template<typename V> bool decode(size_t idx, V& v)
-       {
-               clear();
-               switch(idx)
-               {
-               case 1: set_index(1); return v(var.build<respond_eNB_t>());
-               case 2: set_index(2); return v(var.build<respond_en_gNB_t>());
-               }
-               return false;
-
-       }
-       template<typename V> bool encode(V& v) const
-       {
-               switch(get_index())
-               {
-               case 1: return v(var.as<respond_eNB_t>());
-               case 2: return v(var.as<respond_en_gNB_t>());
-               }
-               return false;
-       }
-       template<typename V> static inline void enumerate(V& v)
-       {
-               v.template operator()<respond_eNB_t>(1);
-               v.template operator()<respond_en_gNB_t>(2);
-
-       }
-       respond_eNB_t& select_respond_eNB() { if(get_index() != 1) { clear(); set_index(1); return var.build<respond_eNB_t>();} return var.as<respond_eNB_t>();}
-       respond_eNB_t const* get_respond_eNB() const { if(get_index() == 1) { return &var.as<respond_eNB_t>();} return nullptr; }
-       respond_en_gNB_t& select_respond_en_gNB() { if(get_index() != 2) { clear(); set_index(2); return var.build<respond_en_gNB_t>();} return var.as<respond_en_gNB_t>();}
-       respond_en_gNB_t const* get_respond_en_gNB() const { if(get_index() == 2) { return &var.as<respond_en_gNB_t>();} return nullptr; }
-       private:
-       void set_index(index_type i) {index = i; base::set();}
-       union union_type
-       {
-               char dummy1[sizeof(respond_eNB_t)];
-               char dummy2[sizeof(respond_en_gNB_t)];
-
-       };
-       asn::variant<sizeof(union_type)>        var;
-       index_type      index {0};
-};
-/*
-EUTRANRCellResourceCoordinationResponse-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-RespondingNodeType-EutranrCellResourceCoordination              CRITICALITY reject      TYPE RespondingNodeType-EutranrCellResourceCoordination                 PRESENCE mandatory},
-       ...
-}
-*/
-
-struct EUTRANRCellResourceCoordinationResponse_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_RespondingNodeType_EutranrCellResourceCoordination() { set(id_RespondingNodeType_EutranrCellResourceCoordination); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_RespondingNodeType_EutranrCellResourceCoordination)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_RespondingNodeType_EutranrCellResourceCoordination);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_RespondingNodeType_EutranrCellResourceCoordination() { set(reject); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               RespondingNodeType_EutranrCellResourceCoordination& select_id_RespondingNodeType_EutranrCellResourceCoordination() { return set<RespondingNodeType_EutranrCellResourceCoordination>(1); }
-               RespondingNodeType_EutranrCellResourceCoordination const* get_id_RespondingNodeType_EutranrCellResourceCoordination() const { return get<RespondingNodeType_EutranrCellResourceCoordination>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<RespondingNodeType_EutranrCellResourceCoordination>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<RespondingNodeType_EutranrCellResourceCoordination>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_RespondingNodeType_EutranrCellResourceCoordination()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<RespondingNodeType_EutranrCellResourceCoordination>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(RespondingNodeType_EutranrCellResourceCoordination)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_RespondingNodeType_EutranrCellResourceCoordination() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-EUTRANRCellResourceCoordinationResponse ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container            {{EUTRANRCellResourceCoordinationResponse-IEs}},
-       ...
-}
-*/
-
-struct EUTRANRCellResourceCoordinationResponse : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "EUTRANRCellResourceCoordinationResponse";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<EUTRANRCellResourceCoordinationResponse_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<EUTRANRCellResourceCoordinationResponse_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-ErrorIndication-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-Old-eNB-UE-X2AP-ID                                      CRITICALITY ignore      TYPE UE-X2AP-ID                                 PRESENCE optional}|
-       { ID id-New-eNB-UE-X2AP-ID                                      CRITICALITY ignore      TYPE UE-X2AP-ID                                 PRESENCE optional}|
-       { ID id-Cause                                                           CRITICALITY ignore      TYPE Cause                                              PRESENCE optional}|
-       { ID id-CriticalityDiagnostics                          CRITICALITY ignore      TYPE CriticalityDiagnostics             PRESENCE optional}|
-       { ID id-Old-eNB-UE-X2AP-ID-Extension            CRITICALITY ignore      TYPE UE-X2AP-ID-Extension               PRESENCE optional}|
-       { ID id-New-eNB-UE-X2AP-ID-Extension            CRITICALITY ignore      TYPE UE-X2AP-ID-Extension               PRESENCE optional}|
-       { ID id-Old-SgNB-UE-X2AP-ID                                     CRITICALITY ignore      TYPE SgNB-UE-X2AP-ID                    PRESENCE optional},
-       ...
-}
-*/
-
-struct ErrorIndication_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 8; }
-               void clear() {type = 0;}
-               void select_id_Old_eNB_UE_X2AP_ID() { set(id_Old_eNB_UE_X2AP_ID); type=1;}
-               void select_id_New_eNB_UE_X2AP_ID() { set(id_New_eNB_UE_X2AP_ID); type=2;}
-               void select_id_Cause() { set(id_Cause); type=3;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=4;}
-               void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(id_Old_eNB_UE_X2AP_ID_Extension); type=5;}
-               void select_id_New_eNB_UE_X2AP_ID_Extension() { set(id_New_eNB_UE_X2AP_ID_Extension); type=6;}
-               void select_id_Old_SgNB_UE_X2AP_ID() { set(id_Old_SgNB_UE_X2AP_ID); type=7;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_Old_eNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_New_eNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_Cause)) { type = 3; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 4; return true; }
-                       else if(equal(id_Old_eNB_UE_X2AP_ID_Extension)) { type = 5; return true; }
-                       else if(equal(id_New_eNB_UE_X2AP_ID_Extension)) { type = 6; return true; }
-                       else if(equal(id_Old_SgNB_UE_X2AP_ID)) { type = 7; return true; }
-                       else { type = 8; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_Old_eNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_New_eNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_Old_eNB_UE_X2AP_ID_Extension);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(id_New_eNB_UE_X2AP_ID_Extension);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(id_Old_SgNB_UE_X2AP_ID);} return false;
-                       case 8: type = 8; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 8; }
-               void clear() {type = 0;}
-               void select_id_Old_eNB_UE_X2AP_ID() { set(ignore); type=1;}
-               void select_id_New_eNB_UE_X2AP_ID() { set(ignore); type=2;}
-               void select_id_Cause() { set(ignore); type=3;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=4;}
-               void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(ignore); type=5;}
-               void select_id_New_eNB_UE_X2AP_ID_Extension() { set(ignore); type=6;}
-               void select_id_Old_SgNB_UE_X2AP_ID() { set(ignore); type=7;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else if(equal(ignore)) { type = 5; return true; }
-                       else if(equal(ignore)) { type = 6; return true; }
-                       else if(equal(ignore)) { type = 7; return true; }
-                       else { type = 8; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 8: type = 8; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_Old_eNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_Old_eNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               UE_X2AP_ID& select_id_New_eNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(2); }
-               UE_X2AP_ID const* get_id_New_eNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(2); }
-               Cause& select_id_Cause() { return set<Cause>(3); }
-               Cause const* get_id_Cause() const { return get<Cause>(3); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(4); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(4); }
-               UE_X2AP_ID_Extension& select_id_Old_eNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(5); }
-               UE_X2AP_ID_Extension const* get_id_Old_eNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(5); }
-               UE_X2AP_ID_Extension& select_id_New_eNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(6); }
-               UE_X2AP_ID_Extension const* get_id_New_eNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(6); }
-               SgNB_UE_X2AP_ID& select_id_Old_SgNB_UE_X2AP_ID() { return set<SgNB_UE_X2AP_ID>(7); }
-               SgNB_UE_X2AP_ID const* get_id_Old_SgNB_UE_X2AP_ID() const { return get<SgNB_UE_X2AP_ID>(7); }
-               bool is_unknown() const { return type == 8; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<UE_X2AP_ID>(); break;
-                       case 3: var.destroy<Cause>(); break;
-                       case 4: var.destroy<CriticalityDiagnostics>(); break;
-                       case 5: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 6: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 7: var.destroy<SgNB_UE_X2AP_ID>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<UE_X2AP_ID>(2);
-                       v.template operator()<Cause>(3);
-                       v.template operator()<CriticalityDiagnostics>(4);
-                       v.template operator()<UE_X2AP_ID_Extension>(5);
-                       v.template operator()<UE_X2AP_ID_Extension>(6);
-                       v.template operator()<SgNB_UE_X2AP_ID>(7);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_Old_eNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_New_eNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_Cause()); return true;
-                       case 4: v(select_id_CriticalityDiagnostics()); return true;
-                       case 5: v(select_id_Old_eNB_UE_X2AP_ID_Extension()); return true;
-                       case 6: v(select_id_New_eNB_UE_X2AP_ID_Extension()); return true;
-                       case 7: v(select_id_Old_SgNB_UE_X2AP_ID()); return true;
-                       case 8: if(type != 8) {clear(); asn::base::set();} type = 8; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<Cause>()); return true;
-                       case 4: v(var.as<CriticalityDiagnostics>()); return true;
-                       case 5: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 6: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 7: v(var.as<SgNB_UE_X2AP_ID>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(Cause)];
-                       char dummy2[sizeof(CriticalityDiagnostics)];
-                       char dummy3[sizeof(SgNB_UE_X2AP_ID)];
-                       char dummy4[sizeof(UE_X2AP_ID)];
-                       char dummy5[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 8; }
-               void clear() {type = 0;}
-               void select_id_Old_eNB_UE_X2AP_ID() { set(optional); type=1;}
-               void select_id_New_eNB_UE_X2AP_ID() { set(optional); type=2;}
-               void select_id_Cause() { set(optional); type=3;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=4;}
-               void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(optional); type=5;}
-               void select_id_New_eNB_UE_X2AP_ID_Extension() { set(optional); type=6;}
-               void select_id_Old_SgNB_UE_X2AP_ID() { set(optional); type=7;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(optional)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else if(equal(optional)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else if(equal(optional)) { type = 6; return true; }
-                       else if(equal(optional)) { type = 7; return true; }
-                       else { type = 8; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 8: type = 8; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ErrorIndication ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{ErrorIndication-IEs}},
-       ...
-}
-*/
-
-struct ErrorIndication : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "ErrorIndication";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<ErrorIndication_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<ErrorIndication_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-GNBStatusIndicationIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-GNBOverloadInformation          CRITICALITY ignore      TYPE GNBOverloadInformation             PRESENCE mandatory},
-       ...
-}
-*/
-
-struct GNBStatusIndicationIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_GNBOverloadInformation() { set(id_GNBOverloadInformation); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_GNBOverloadInformation)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_GNBOverloadInformation);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_GNBOverloadInformation() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               GNBOverloadInformation& select_id_GNBOverloadInformation() { return set<GNBOverloadInformation>(1); }
-               GNBOverloadInformation const* get_id_GNBOverloadInformation() const { return get<GNBOverloadInformation>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<GNBOverloadInformation>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<GNBOverloadInformation>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_GNBOverloadInformation()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<GNBOverloadInformation>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(GNBOverloadInformation)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_GNBOverloadInformation() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-GNBStatusIndication ::= SEQUENCE {
-       protocolIEs                     ProtocolIE-Container    { { GNBStatusIndicationIEs} },
-       ...
-}
-*/
-
-struct GNBStatusIndication : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "GNBStatusIndication";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<GNBStatusIndicationIEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<GNBStatusIndicationIEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-HandoverCancel-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-Old-eNB-UE-X2AP-ID                                      CRITICALITY reject      TYPE UE-X2AP-ID                                 PRESENCE mandatory}|
-       { ID id-New-eNB-UE-X2AP-ID                                      CRITICALITY ignore      TYPE UE-X2AP-ID                                 PRESENCE optional}|
-       { ID id-Cause                                                           CRITICALITY ignore      TYPE Cause                                              PRESENCE mandatory}|
-       { ID id-Old-eNB-UE-X2AP-ID-Extension            CRITICALITY reject      TYPE UE-X2AP-ID-Extension               PRESENCE optional}|
-       { ID id-New-eNB-UE-X2AP-ID-Extension            CRITICALITY ignore      TYPE UE-X2AP-ID-Extension               PRESENCE optional},
-       ...
-}
-*/
-
-struct HandoverCancel_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_Old_eNB_UE_X2AP_ID() { set(id_Old_eNB_UE_X2AP_ID); type=1;}
-               void select_id_New_eNB_UE_X2AP_ID() { set(id_New_eNB_UE_X2AP_ID); type=2;}
-               void select_id_Cause() { set(id_Cause); type=3;}
-               void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(id_Old_eNB_UE_X2AP_ID_Extension); type=4;}
-               void select_id_New_eNB_UE_X2AP_ID_Extension() { set(id_New_eNB_UE_X2AP_ID_Extension); type=5;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_Old_eNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_New_eNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_Cause)) { type = 3; return true; }
-                       else if(equal(id_Old_eNB_UE_X2AP_ID_Extension)) { type = 4; return true; }
-                       else if(equal(id_New_eNB_UE_X2AP_ID_Extension)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_Old_eNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_New_eNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_Old_eNB_UE_X2AP_ID_Extension);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_New_eNB_UE_X2AP_ID_Extension);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_Old_eNB_UE_X2AP_ID() { set(reject); type=1;}
-               void select_id_New_eNB_UE_X2AP_ID() { set(ignore); type=2;}
-               void select_id_Cause() { set(ignore); type=3;}
-               void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(reject); type=4;}
-               void select_id_New_eNB_UE_X2AP_ID_Extension() { set(ignore); type=5;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(reject)) { type = 4; return true; }
-                       else if(equal(ignore)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_Old_eNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_Old_eNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               UE_X2AP_ID& select_id_New_eNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(2); }
-               UE_X2AP_ID const* get_id_New_eNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(2); }
-               Cause& select_id_Cause() { return set<Cause>(3); }
-               Cause const* get_id_Cause() const { return get<Cause>(3); }
-               UE_X2AP_ID_Extension& select_id_Old_eNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(4); }
-               UE_X2AP_ID_Extension const* get_id_Old_eNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(4); }
-               UE_X2AP_ID_Extension& select_id_New_eNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(5); }
-               UE_X2AP_ID_Extension const* get_id_New_eNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(5); }
-               bool is_unknown() const { return type == 6; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<UE_X2AP_ID>(); break;
-                       case 3: var.destroy<Cause>(); break;
-                       case 4: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 5: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<UE_X2AP_ID>(2);
-                       v.template operator()<Cause>(3);
-                       v.template operator()<UE_X2AP_ID_Extension>(4);
-                       v.template operator()<UE_X2AP_ID_Extension>(5);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_Old_eNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_New_eNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_Cause()); return true;
-                       case 4: v(select_id_Old_eNB_UE_X2AP_ID_Extension()); return true;
-                       case 5: v(select_id_New_eNB_UE_X2AP_ID_Extension()); return true;
-                       case 6: if(type != 6) {clear(); asn::base::set();} type = 6; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<Cause>()); return true;
-                       case 4: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 5: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(Cause)];
-                       char dummy2[sizeof(UE_X2AP_ID)];
-                       char dummy3[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_Old_eNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_New_eNB_UE_X2AP_ID() { set(optional); type=2;}
-               void select_id_Cause() { set(mandatory); type=3;}
-               void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(optional); type=4;}
-               void select_id_New_eNB_UE_X2AP_ID_Extension() { set(optional); type=5;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-HandoverCancel ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{HandoverCancel-IEs}},
-       ...
-}
-*/
-
-struct HandoverCancel : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "HandoverCancel";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<HandoverCancel_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<HandoverCancel_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-HandoverPreparationFailure-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-Old-eNB-UE-X2AP-ID                              CRITICALITY ignore      TYPE UE-X2AP-ID                                 PRESENCE mandatory}|
-       { ID id-Cause                                                   CRITICALITY ignore      TYPE Cause                                              PRESENCE mandatory}|
-       { ID id-CriticalityDiagnostics                  CRITICALITY ignore      TYPE CriticalityDiagnostics             PRESENCE optional}|
-       { ID id-Old-eNB-UE-X2AP-ID-Extension    CRITICALITY ignore      TYPE UE-X2AP-ID-Extension               PRESENCE optional},
-
-       ...
-}
-*/
-
-struct HandoverPreparationFailure_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 5; }
-               void clear() {type = 0;}
-               void select_id_Old_eNB_UE_X2AP_ID() { set(id_Old_eNB_UE_X2AP_ID); type=1;}
-               void select_id_Cause() { set(id_Cause); type=2;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=3;}
-               void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(id_Old_eNB_UE_X2AP_ID_Extension); type=4;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_Old_eNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_Cause)) { type = 2; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 3; return true; }
-                       else if(equal(id_Old_eNB_UE_X2AP_ID_Extension)) { type = 4; return true; }
-                       else { type = 5; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_Old_eNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_Cause);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_Old_eNB_UE_X2AP_ID_Extension);} return false;
-                       case 5: type = 5; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 5; }
-               void clear() {type = 0;}
-               void select_id_Old_eNB_UE_X2AP_ID() { set(ignore); type=1;}
-               void select_id_Cause() { set(ignore); type=2;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=3;}
-               void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(ignore); type=4;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else { type = 5; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_Old_eNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_Old_eNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               Cause& select_id_Cause() { return set<Cause>(2); }
-               Cause const* get_id_Cause() const { return get<Cause>(2); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(3); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(3); }
-               UE_X2AP_ID_Extension& select_id_Old_eNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(4); }
-               UE_X2AP_ID_Extension const* get_id_Old_eNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(4); }
-               bool is_unknown() const { return type == 5; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<Cause>(); break;
-                       case 3: var.destroy<CriticalityDiagnostics>(); break;
-                       case 4: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<Cause>(2);
-                       v.template operator()<CriticalityDiagnostics>(3);
-                       v.template operator()<UE_X2AP_ID_Extension>(4);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_Old_eNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_Cause()); return true;
-                       case 3: v(select_id_CriticalityDiagnostics()); return true;
-                       case 4: v(select_id_Old_eNB_UE_X2AP_ID_Extension()); return true;
-                       case 5: if(type != 5) {clear(); asn::base::set();} type = 5; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<Cause>()); return true;
-                       case 3: v(var.as<CriticalityDiagnostics>()); return true;
-                       case 4: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(Cause)];
-                       char dummy2[sizeof(CriticalityDiagnostics)];
-                       char dummy3[sizeof(UE_X2AP_ID)];
-                       char dummy4[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 5; }
-               void clear() {type = 0;}
-               void select_id_Old_eNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_Cause() { set(mandatory); type=2;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=3;}
-               void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(optional); type=4;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(optional)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else { type = 5; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-HandoverPreparationFailure ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{HandoverPreparationFailure-IEs}},
-       ...
-}
-*/
-
-struct HandoverPreparationFailure : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "HandoverPreparationFailure";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<HandoverPreparationFailure_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<HandoverPreparationFailure_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-MobilityInformation ::= BIT STRING (SIZE(32))
-*/
-
-struct MobilityInformation : asn::bstring<>
-{
-       using constraint_t = asn::constraints<false,asn::one<32>>;
-       static constexpr const char* name() {return "MobilityInformation";}
-       using parent_t = asn::bstring<>;
-
-};
-
-/*
-HandoverReport-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-HandoverReportType                                                      CRITICALITY ignore      TYPE HandoverReportType                                                                 PRESENCE mandatory}|
-       { ID id-Cause                                                                           CRITICALITY ignore      TYPE Cause                                                                                                      PRESENCE mandatory}|
-       { ID id-SourceCellECGI                                                          CRITICALITY ignore      TYPE ECGI                                                                                                       PRESENCE mandatory}|
-       { ID id-FailureCellECGI                                                         CRITICALITY ignore      TYPE ECGI                                                                                                       PRESENCE mandatory}|
-       { ID id-Re-establishmentCellECGI                                        CRITICALITY ignore      TYPE ECGI                                                                                                       PRESENCE conditional} -- The IE shall be present if the Handover Report Type IE is set to “HO to Wrong Cell” -- |
-       { ID id-TargetCellInUTRAN                                                       CRITICALITY ignore      TYPE TargetCellInUTRAN                                                                  PRESENCE conditional} -- The IE shall be present if the Handover Report Type IE is set to "InterRAT ping-pong" --|
-       { ID id-SourceCellCRNTI                                                         CRITICALITY ignore      TYPE CRNTI                                                                                                      PRESENCE optional}|
-       { ID id-MobilityInformation                                                     CRITICALITY ignore      TYPE MobilityInformation                                                                        PRESENCE optional}|
-       { ID id-UE-RLF-Report-Container                                         CRITICALITY ignore      TYPE UE-RLF-Report-Container                                                    PRESENCE optional}|
-       { ID id-UE-RLF-Report-Container-for-extended-bands      CRITICALITY ignore      TYPE UE-RLF-Report-Container-for-extended-bands PRESENCE optional},
-       ...
-}
-*/
-
-struct HandoverReport_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 11; }
-               void clear() {type = 0;}
-               void select_id_HandoverReportType() { set(id_HandoverReportType); type=1;}
-               void select_id_Cause() { set(id_Cause); type=2;}
-               void select_id_SourceCellECGI() { set(id_SourceCellECGI); type=3;}
-               void select_id_FailureCellECGI() { set(id_FailureCellECGI); type=4;}
-               void select_id_Re_establishmentCellECGI() { set(id_Re_establishmentCellECGI); type=5;}
-               void select_id_TargetCellInUTRAN() { set(id_TargetCellInUTRAN); type=6;}
-               void select_id_SourceCellCRNTI() { set(id_SourceCellCRNTI); type=7;}
-               void select_id_MobilityInformation() { set(id_MobilityInformation); type=8;}
-               void select_id_UE_RLF_Report_Container() { set(id_UE_RLF_Report_Container); type=9;}
-               void select_id_UE_RLF_Report_Container_for_extended_bands() { set(id_UE_RLF_Report_Container_for_extended_bands); type=10;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_HandoverReportType)) { type = 1; return true; }
-                       else if(equal(id_Cause)) { type = 2; return true; }
-                       else if(equal(id_SourceCellECGI)) { type = 3; return true; }
-                       else if(equal(id_FailureCellECGI)) { type = 4; return true; }
-                       else if(equal(id_Re_establishmentCellECGI)) { type = 5; return true; }
-                       else if(equal(id_TargetCellInUTRAN)) { type = 6; return true; }
-                       else if(equal(id_SourceCellCRNTI)) { type = 7; return true; }
-                       else if(equal(id_MobilityInformation)) { type = 8; return true; }
-                       else if(equal(id_UE_RLF_Report_Container)) { type = 9; return true; }
-                       else if(equal(id_UE_RLF_Report_Container_for_extended_bands)) { type = 10; return true; }
-                       else { type = 11; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_HandoverReportType);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_Cause);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_SourceCellECGI);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_FailureCellECGI);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_Re_establishmentCellECGI);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(id_TargetCellInUTRAN);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(id_SourceCellCRNTI);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(id_MobilityInformation);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(id_UE_RLF_Report_Container);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(id_UE_RLF_Report_Container_for_extended_bands);} return false;
-                       case 11: type = 11; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 11; }
-               void clear() {type = 0;}
-               void select_id_HandoverReportType() { set(ignore); type=1;}
-               void select_id_Cause() { set(ignore); type=2;}
-               void select_id_SourceCellECGI() { set(ignore); type=3;}
-               void select_id_FailureCellECGI() { set(ignore); type=4;}
-               void select_id_Re_establishmentCellECGI() { set(ignore); type=5;}
-               void select_id_TargetCellInUTRAN() { set(ignore); type=6;}
-               void select_id_SourceCellCRNTI() { set(ignore); type=7;}
-               void select_id_MobilityInformation() { set(ignore); type=8;}
-               void select_id_UE_RLF_Report_Container() { set(ignore); type=9;}
-               void select_id_UE_RLF_Report_Container_for_extended_bands() { set(ignore); type=10;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else if(equal(ignore)) { type = 5; return true; }
-                       else if(equal(ignore)) { type = 6; return true; }
-                       else if(equal(ignore)) { type = 7; return true; }
-                       else if(equal(ignore)) { type = 8; return true; }
-                       else if(equal(ignore)) { type = 9; return true; }
-                       else if(equal(ignore)) { type = 10; return true; }
-                       else { type = 11; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 11: type = 11; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               HandoverReportType& select_id_HandoverReportType() { return set<HandoverReportType>(1); }
-               HandoverReportType const* get_id_HandoverReportType() const { return get<HandoverReportType>(1); }
-               Cause& select_id_Cause() { return set<Cause>(2); }
-               Cause const* get_id_Cause() const { return get<Cause>(2); }
-               ECGI& select_id_SourceCellECGI() { return set<ECGI>(3); }
-               ECGI const* get_id_SourceCellECGI() const { return get<ECGI>(3); }
-               ECGI& select_id_FailureCellECGI() { return set<ECGI>(4); }
-               ECGI const* get_id_FailureCellECGI() const { return get<ECGI>(4); }
-               ECGI& select_id_Re_establishmentCellECGI() { return set<ECGI>(5); }
-               ECGI const* get_id_Re_establishmentCellECGI() const { return get<ECGI>(5); }
-               TargetCellInUTRAN& select_id_TargetCellInUTRAN() { return set<TargetCellInUTRAN>(6); }
-               TargetCellInUTRAN const* get_id_TargetCellInUTRAN() const { return get<TargetCellInUTRAN>(6); }
-               CRNTI& select_id_SourceCellCRNTI() { return set<CRNTI>(7); }
-               CRNTI const* get_id_SourceCellCRNTI() const { return get<CRNTI>(7); }
-               MobilityInformation& select_id_MobilityInformation() { return set<MobilityInformation>(8); }
-               MobilityInformation const* get_id_MobilityInformation() const { return get<MobilityInformation>(8); }
-               UE_RLF_Report_Container& select_id_UE_RLF_Report_Container() { return set<UE_RLF_Report_Container>(9); }
-               UE_RLF_Report_Container const* get_id_UE_RLF_Report_Container() const { return get<UE_RLF_Report_Container>(9); }
-               UE_RLF_Report_Container_for_extended_bands& select_id_UE_RLF_Report_Container_for_extended_bands() { return set<UE_RLF_Report_Container_for_extended_bands>(10); }
-               UE_RLF_Report_Container_for_extended_bands const* get_id_UE_RLF_Report_Container_for_extended_bands() const { return get<UE_RLF_Report_Container_for_extended_bands>(10); }
-               bool is_unknown() const { return type == 11; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<HandoverReportType>(); break;
-                       case 2: var.destroy<Cause>(); break;
-                       case 3: var.destroy<ECGI>(); break;
-                       case 4: var.destroy<ECGI>(); break;
-                       case 5: var.destroy<ECGI>(); break;
-                       case 6: var.destroy<TargetCellInUTRAN>(); break;
-                       case 7: var.destroy<CRNTI>(); break;
-                       case 8: var.destroy<MobilityInformation>(); break;
-                       case 9: var.destroy<UE_RLF_Report_Container>(); break;
-                       case 10: var.destroy<UE_RLF_Report_Container_for_extended_bands>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<HandoverReportType>(1);
-                       v.template operator()<Cause>(2);
-                       v.template operator()<ECGI>(3);
-                       v.template operator()<ECGI>(4);
-                       v.template operator()<ECGI>(5);
-                       v.template operator()<TargetCellInUTRAN>(6);
-                       v.template operator()<CRNTI>(7);
-                       v.template operator()<MobilityInformation>(8);
-                       v.template operator()<UE_RLF_Report_Container>(9);
-                       v.template operator()<UE_RLF_Report_Container_for_extended_bands>(10);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_HandoverReportType()); return true;
-                       case 2: v(select_id_Cause()); return true;
-                       case 3: v(select_id_SourceCellECGI()); return true;
-                       case 4: v(select_id_FailureCellECGI()); return true;
-                       case 5: v(select_id_Re_establishmentCellECGI()); return true;
-                       case 6: v(select_id_TargetCellInUTRAN()); return true;
-                       case 7: v(select_id_SourceCellCRNTI()); return true;
-                       case 8: v(select_id_MobilityInformation()); return true;
-                       case 9: v(select_id_UE_RLF_Report_Container()); return true;
-                       case 10: v(select_id_UE_RLF_Report_Container_for_extended_bands()); return true;
-                       case 11: if(type != 11) {clear(); asn::base::set();} type = 11; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<HandoverReportType>()); return true;
-                       case 2: v(var.as<Cause>()); return true;
-                       case 3: v(var.as<ECGI>()); return true;
-                       case 4: v(var.as<ECGI>()); return true;
-                       case 5: v(var.as<ECGI>()); return true;
-                       case 6: v(var.as<TargetCellInUTRAN>()); return true;
-                       case 7: v(var.as<CRNTI>()); return true;
-                       case 8: v(var.as<MobilityInformation>()); return true;
-                       case 9: v(var.as<UE_RLF_Report_Container>()); return true;
-                       case 10: v(var.as<UE_RLF_Report_Container_for_extended_bands>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(CRNTI)];
-                       char dummy2[sizeof(Cause)];
-                       char dummy3[sizeof(ECGI)];
-                       char dummy4[sizeof(HandoverReportType)];
-                       char dummy5[sizeof(MobilityInformation)];
-                       char dummy6[sizeof(TargetCellInUTRAN)];
-                       char dummy7[sizeof(UE_RLF_Report_Container)];
-                       char dummy8[sizeof(UE_RLF_Report_Container_for_extended_bands)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 11; }
-               void clear() {type = 0;}
-               void select_id_HandoverReportType() { set(mandatory); type=1;}
-               void select_id_Cause() { set(mandatory); type=2;}
-               void select_id_SourceCellECGI() { set(mandatory); type=3;}
-               void select_id_FailureCellECGI() { set(mandatory); type=4;}
-               void select_id_Re_establishmentCellECGI() { set(conditional); type=5;}
-               void select_id_TargetCellInUTRAN() { set(conditional); type=6;}
-               void select_id_SourceCellCRNTI() { set(optional); type=7;}
-               void select_id_MobilityInformation() { set(optional); type=8;}
-               void select_id_UE_RLF_Report_Container() { set(optional); type=9;}
-               void select_id_UE_RLF_Report_Container_for_extended_bands() { set(optional); type=10;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else if(equal(mandatory)) { type = 4; return true; }
-                       else if(equal(conditional)) { type = 5; return true; }
-                       else if(equal(conditional)) { type = 6; return true; }
-                       else if(equal(optional)) { type = 7; return true; }
-                       else if(equal(optional)) { type = 8; return true; }
-                       else if(equal(optional)) { type = 9; return true; }
-                       else if(equal(optional)) { type = 10; return true; }
-                       else { type = 11; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(conditional);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(conditional);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 11: type = 11; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-HandoverReport ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{HandoverReport-IEs}},
-       ...
-}
-*/
-
-struct HandoverReport : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "HandoverReport";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<HandoverReport_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<HandoverReport_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-UE-ContextInformation-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-{ ID id-ManagementBasedMDTallowed                      CRITICALITY ignore      EXTENSION ManagementBasedMDTallowed                                     PRESENCE optional }|
-{ ID id-ManagementBasedMDTPLMNList                     CRITICALITY ignore      EXTENSION MDTPLMNList                                                                   PRESENCE optional }|
-{ ID id-UESidelinkAggregateMaximumBitRate      CRITICALITY ignore      EXTENSION UESidelinkAggregateMaximumBitRate             PRESENCE optional},
-       ...
-}
-*/
-
-struct UE_ContextInformation_ExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_ManagementBasedMDTallowed() { set(id_ManagementBasedMDTallowed); type=1;}
-               void select_id_ManagementBasedMDTPLMNList() { set(id_ManagementBasedMDTPLMNList); type=2;}
-               void select_id_UESidelinkAggregateMaximumBitRate() { set(id_UESidelinkAggregateMaximumBitRate); type=3;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_ManagementBasedMDTallowed)) { type = 1; return true; }
-                       else if(equal(id_ManagementBasedMDTPLMNList)) { type = 2; return true; }
-                       else if(equal(id_UESidelinkAggregateMaximumBitRate)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_ManagementBasedMDTallowed);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_ManagementBasedMDTPLMNList);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_UESidelinkAggregateMaximumBitRate);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_ManagementBasedMDTallowed() { set(ignore); type=1;}
-               void select_id_ManagementBasedMDTPLMNList() { set(ignore); type=2;}
-               void select_id_UESidelinkAggregateMaximumBitRate() { set(ignore); type=3;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               ManagementBasedMDTallowed& select_id_ManagementBasedMDTallowed() { return set<ManagementBasedMDTallowed>(1); }
-               ManagementBasedMDTallowed const* get_id_ManagementBasedMDTallowed() const { return get<ManagementBasedMDTallowed>(1); }
-               MDTPLMNList& select_id_ManagementBasedMDTPLMNList() { return set<MDTPLMNList>(2); }
-               MDTPLMNList const* get_id_ManagementBasedMDTPLMNList() const { return get<MDTPLMNList>(2); }
-               UESidelinkAggregateMaximumBitRate& select_id_UESidelinkAggregateMaximumBitRate() { return set<UESidelinkAggregateMaximumBitRate>(3); }
-               UESidelinkAggregateMaximumBitRate const* get_id_UESidelinkAggregateMaximumBitRate() const { return get<UESidelinkAggregateMaximumBitRate>(3); }
-               bool is_unknown() const { return type == 4; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<ManagementBasedMDTallowed>(); break;
-                       case 2: var.destroy<MDTPLMNList>(); break;
-                       case 3: var.destroy<UESidelinkAggregateMaximumBitRate>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<ManagementBasedMDTallowed>(1);
-                       v.template operator()<MDTPLMNList>(2);
-                       v.template operator()<UESidelinkAggregateMaximumBitRate>(3);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_ManagementBasedMDTallowed()); return true;
-                       case 2: v(select_id_ManagementBasedMDTPLMNList()); return true;
-                       case 3: v(select_id_UESidelinkAggregateMaximumBitRate()); return true;
-                       case 4: if(type != 4) {clear(); asn::base::set();} type = 4; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<ManagementBasedMDTallowed>()); return true;
-                       case 2: v(var.as<MDTPLMNList>()); return true;
-                       case 3: v(var.as<UESidelinkAggregateMaximumBitRate>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(MDTPLMNList)];
-                       char dummy2[sizeof(ManagementBasedMDTallowed)];
-                       char dummy3[sizeof(UESidelinkAggregateMaximumBitRate)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_ManagementBasedMDTallowed() { set(optional); type=1;}
-               void select_id_ManagementBasedMDTPLMNList() { set(optional); type=2;}
-               void select_id_UESidelinkAggregateMaximumBitRate() { set(optional); type=3;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(optional)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else if(equal(optional)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-UE-ContextInformation ::= SEQUENCE {
-       mME-UE-S1AP-ID                                          UE-S1AP-ID,
-       uESecurityCapabilities                          UESecurityCapabilities,
-       aS-SecurityInformation                          AS-SecurityInformation,
-       uEaggregateMaximumBitRate                       UEAggregateMaximumBitRate,
-       subscriberProfileIDforRFP                       SubscriberProfileIDforRFP               OPTIONAL,
-       e-RABs-ToBeSetup-List                           E-RABs-ToBeSetup-List,
-       rRC-Context                                                     RRC-Context,
-       handoverRestrictionList                         HandoverRestrictionList         OPTIONAL,
-       locationReportingInformation            LocationReportingInformation    OPTIONAL,
-       iE-Extensions                                           ProtocolExtensionContainer { {UE-ContextInformation-ExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct UE_ContextInformation : asn::sequence<10, 0, true, 4>
-{
-       static constexpr const char* name() {return "UE-ContextInformation";}
-       using parent_t = asn::sequence<10, 0, true, 4>;
-       struct mME_UE_S1AP_ID_t : UE_S1AP_ID
-       {
-               static constexpr const char* name() {return "mME_UE_S1AP_ID_t";}
-               using parent_t = UE_S1AP_ID;
-
-       };
-       mME_UE_S1AP_ID_t& ref_mME_UE_S1AP_ID() {return mME_UE_S1AP_ID;}
-       mME_UE_S1AP_ID_t const& ref_mME_UE_S1AP_ID() const {return mME_UE_S1AP_ID;}
-       struct uESecurityCapabilities_t : UESecurityCapabilities
-       {
-               static constexpr const char* name() {return "uESecurityCapabilities_t";}
-               using parent_t = UESecurityCapabilities;
-
-       };
-       uESecurityCapabilities_t& ref_uESecurityCapabilities() {return uESecurityCapabilities;}
-       uESecurityCapabilities_t const& ref_uESecurityCapabilities() const {return uESecurityCapabilities;}
-       struct aS_SecurityInformation_t : AS_SecurityInformation
-       {
-               static constexpr const char* name() {return "aS_SecurityInformation_t";}
-               using parent_t = AS_SecurityInformation;
-
-       };
-       aS_SecurityInformation_t& ref_aS_SecurityInformation() {return aS_SecurityInformation;}
-       aS_SecurityInformation_t const& ref_aS_SecurityInformation() const {return aS_SecurityInformation;}
-       struct uEaggregateMaximumBitRate_t : UEAggregateMaximumBitRate
-       {
-               static constexpr const char* name() {return "uEaggregateMaximumBitRate_t";}
-               using parent_t = UEAggregateMaximumBitRate;
-
-       };
-       uEaggregateMaximumBitRate_t& ref_uEaggregateMaximumBitRate() {return uEaggregateMaximumBitRate;}
-       uEaggregateMaximumBitRate_t const& ref_uEaggregateMaximumBitRate() const {return uEaggregateMaximumBitRate;}
-       struct subscriberProfileIDforRFP_t : SubscriberProfileIDforRFP
-       {
-               static constexpr const char* name() {return "subscriberProfileIDforRFP_t";}
-               using parent_t = SubscriberProfileIDforRFP;
-               static constexpr bool optional = true;
-
-       };
-       subscriberProfileIDforRFP_t& set_subscriberProfileIDforRFP() { subscriberProfileIDforRFP.setpresent(true); return subscriberProfileIDforRFP;}
-       subscriberProfileIDforRFP_t const* get_subscriberProfileIDforRFP() const {return subscriberProfileIDforRFP.is_valid() ? &subscriberProfileIDforRFP : nullptr;}
-       struct e_RABs_ToBeSetup_List_t : E_RABs_ToBeSetup_List
-       {
-               static constexpr const char* name() {return "e_RABs_ToBeSetup_List_t";}
-               using parent_t = E_RABs_ToBeSetup_List;
-
-       };
-       e_RABs_ToBeSetup_List_t& ref_e_RABs_ToBeSetup_List() {return e_RABs_ToBeSetup_List;}
-       e_RABs_ToBeSetup_List_t const& ref_e_RABs_ToBeSetup_List() const {return e_RABs_ToBeSetup_List;}
-       struct rRC_Context_t : RRC_Context
-       {
-               static constexpr const char* name() {return "rRC_Context_t";}
-               using parent_t = RRC_Context;
-
-       };
-       rRC_Context_t& ref_rRC_Context() {return rRC_Context;}
-       rRC_Context_t const& ref_rRC_Context() const {return rRC_Context;}
-       struct handoverRestrictionList_t : HandoverRestrictionList
-       {
-               static constexpr const char* name() {return "handoverRestrictionList_t";}
-               using parent_t = HandoverRestrictionList;
-               static constexpr bool optional = true;
-
-       };
-       handoverRestrictionList_t& set_handoverRestrictionList() { handoverRestrictionList.setpresent(true); return handoverRestrictionList;}
-       handoverRestrictionList_t const* get_handoverRestrictionList() const {return handoverRestrictionList.is_valid() ? &handoverRestrictionList : nullptr;}
-       struct locationReportingInformation_t : LocationReportingInformation
-       {
-               static constexpr const char* name() {return "locationReportingInformation_t";}
-               using parent_t = LocationReportingInformation;
-               static constexpr bool optional = true;
-
-       };
-       locationReportingInformation_t& set_locationReportingInformation() { locationReportingInformation.setpresent(true); return locationReportingInformation;}
-       locationReportingInformation_t const* get_locationReportingInformation() const {return locationReportingInformation.is_valid() ? &locationReportingInformation : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<UE_ContextInformation_ExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<UE_ContextInformation_ExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(mME_UE_S1AP_ID);
-               v(uESecurityCapabilities);
-               v(aS_SecurityInformation);
-               v(uEaggregateMaximumBitRate);
-               v(subscriberProfileIDforRFP);
-               v(e_RABs_ToBeSetup_List);
-               v(rRC_Context);
-               v(handoverRestrictionList);
-               v(locationReportingInformation);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(mME_UE_S1AP_ID);
-               v(uESecurityCapabilities);
-               v(aS_SecurityInformation);
-               v(uEaggregateMaximumBitRate);
-               v(subscriberProfileIDforRFP);
-               v(e_RABs_ToBeSetup_List);
-               v(rRC_Context);
-               v(handoverRestrictionList);
-               v(locationReportingInformation);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               mME_UE_S1AP_ID.clear();
-               uESecurityCapabilities.clear();
-               aS_SecurityInformation.clear();
-               uEaggregateMaximumBitRate.clear();
-               subscriberProfileIDforRFP.clear();
-               e_RABs_ToBeSetup_List.clear();
-               rRC_Context.clear();
-               handoverRestrictionList.clear();
-               locationReportingInformation.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       mME_UE_S1AP_ID_t        mME_UE_S1AP_ID;
-       uESecurityCapabilities_t        uESecurityCapabilities;
-       aS_SecurityInformation_t        aS_SecurityInformation;
-       uEaggregateMaximumBitRate_t     uEaggregateMaximumBitRate;
-       subscriberProfileIDforRFP_t     subscriberProfileIDforRFP;
-       e_RABs_ToBeSetup_List_t e_RABs_ToBeSetup_List;
-       rRC_Context_t   rRC_Context;
-       handoverRestrictionList_t       handoverRestrictionList;
-       locationReportingInformation_t  locationReportingInformation;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-UE-ContextReferenceAtSeNB-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct UE_ContextReferenceAtSeNB_ItemExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-UE-ContextReferenceAtSeNB ::= SEQUENCE {
-       source-GlobalSeNB-ID            GlobalENB-ID,
-       seNB-UE-X2AP-ID                         UE-X2AP-ID,
-       seNB-UE-X2AP-ID-Extension       UE-X2AP-ID-Extension,
-       iE-Extensions                           ProtocolExtensionContainer { {UE-ContextReferenceAtSeNB-ItemExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct UE_ContextReferenceAtSeNB : asn::sequence<4, 0, true, 1>
-{
-       static constexpr const char* name() {return "UE-ContextReferenceAtSeNB";}
-       using parent_t = asn::sequence<4, 0, true, 1>;
-       struct source_GlobalSeNB_ID_t : GlobalENB_ID
-       {
-               static constexpr const char* name() {return "source_GlobalSeNB_ID_t";}
-               using parent_t = GlobalENB_ID;
-
-       };
-       source_GlobalSeNB_ID_t& ref_source_GlobalSeNB_ID() {return source_GlobalSeNB_ID;}
-       source_GlobalSeNB_ID_t const& ref_source_GlobalSeNB_ID() const {return source_GlobalSeNB_ID;}
-       struct seNB_UE_X2AP_ID_t : UE_X2AP_ID
-       {
-               static constexpr const char* name() {return "seNB_UE_X2AP_ID_t";}
-               using parent_t = UE_X2AP_ID;
-
-       };
-       seNB_UE_X2AP_ID_t& ref_seNB_UE_X2AP_ID() {return seNB_UE_X2AP_ID;}
-       seNB_UE_X2AP_ID_t const& ref_seNB_UE_X2AP_ID() const {return seNB_UE_X2AP_ID;}
-       struct seNB_UE_X2AP_ID_Extension_t : UE_X2AP_ID_Extension
-       {
-               static constexpr const char* name() {return "seNB_UE_X2AP_ID_Extension_t";}
-               using parent_t = UE_X2AP_ID_Extension;
-
-       };
-       seNB_UE_X2AP_ID_Extension_t& ref_seNB_UE_X2AP_ID_Extension() {return seNB_UE_X2AP_ID_Extension;}
-       seNB_UE_X2AP_ID_Extension_t const& ref_seNB_UE_X2AP_ID_Extension() const {return seNB_UE_X2AP_ID_Extension;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<UE_ContextReferenceAtSeNB_ItemExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<UE_ContextReferenceAtSeNB_ItemExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(source_GlobalSeNB_ID);
-               v(seNB_UE_X2AP_ID);
-               v(seNB_UE_X2AP_ID_Extension);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(source_GlobalSeNB_ID);
-               v(seNB_UE_X2AP_ID);
-               v(seNB_UE_X2AP_ID_Extension);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               source_GlobalSeNB_ID.clear();
-               seNB_UE_X2AP_ID.clear();
-               seNB_UE_X2AP_ID_Extension.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       source_GlobalSeNB_ID_t  source_GlobalSeNB_ID;
-       seNB_UE_X2AP_ID_t       seNB_UE_X2AP_ID;
-       seNB_UE_X2AP_ID_Extension_t     seNB_UE_X2AP_ID_Extension;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-UE-ContextReferenceAtWT-ItemExtIEs     X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct UE_ContextReferenceAtWT_ItemExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-UE-ContextReferenceAtWT ::= SEQUENCE {
-       wTID                                    WTID,
-       wT-UE-XwAP-ID                   WT-UE-XwAP-ID,
-       iE-Extensions                   ProtocolExtensionContainer { {UE-ContextReferenceAtWT-ItemExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct UE_ContextReferenceAtWT : asn::sequence<3, 0, true, 1>
-{
-       static constexpr const char* name() {return "UE-ContextReferenceAtWT";}
-       using parent_t = asn::sequence<3, 0, true, 1>;
-       struct wTID_t : WTID
-       {
-               static constexpr const char* name() {return "wTID_t";}
-               using parent_t = WTID;
-
-       };
-       wTID_t& ref_wTID() {return wTID;}
-       wTID_t const& ref_wTID() const {return wTID;}
-       struct wT_UE_XwAP_ID_t : WT_UE_XwAP_ID
-       {
-               static constexpr const char* name() {return "wT_UE_XwAP_ID_t";}
-               using parent_t = WT_UE_XwAP_ID;
-
-       };
-       wT_UE_XwAP_ID_t& ref_wT_UE_XwAP_ID() {return wT_UE_XwAP_ID;}
-       wT_UE_XwAP_ID_t const& ref_wT_UE_XwAP_ID() const {return wT_UE_XwAP_ID;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<UE_ContextReferenceAtWT_ItemExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<UE_ContextReferenceAtWT_ItemExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(wTID);
-               v(wT_UE_XwAP_ID);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(wTID);
-               v(wT_UE_XwAP_ID);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               wTID.clear();
-               wT_UE_XwAP_ID.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       wTID_t  wTID;
-       wT_UE_XwAP_ID_t wT_UE_XwAP_ID;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-UE-ContextReferenceAtSgNB-ItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct UE_ContextReferenceAtSgNB_ItemExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-UE-ContextReferenceAtSgNB ::= SEQUENCE {
-       source-GlobalSgNB-ID                    GlobalGNB-ID,
-       sgNB-UE-X2AP-ID                         SgNB-UE-X2AP-ID,
-       iE-Extensions                           ProtocolExtensionContainer { {UE-ContextReferenceAtSgNB-ItemExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct UE_ContextReferenceAtSgNB : asn::sequence<3, 0, true, 1>
-{
-       static constexpr const char* name() {return "UE-ContextReferenceAtSgNB";}
-       using parent_t = asn::sequence<3, 0, true, 1>;
-       struct source_GlobalSgNB_ID_t : GlobalGNB_ID
-       {
-               static constexpr const char* name() {return "source_GlobalSgNB_ID_t";}
-               using parent_t = GlobalGNB_ID;
-
-       };
-       source_GlobalSgNB_ID_t& ref_source_GlobalSgNB_ID() {return source_GlobalSgNB_ID;}
-       source_GlobalSgNB_ID_t const& ref_source_GlobalSgNB_ID() const {return source_GlobalSgNB_ID;}
-       struct sgNB_UE_X2AP_ID_t : SgNB_UE_X2AP_ID
-       {
-               static constexpr const char* name() {return "sgNB_UE_X2AP_ID_t";}
-               using parent_t = SgNB_UE_X2AP_ID;
-
-       };
-       sgNB_UE_X2AP_ID_t& ref_sgNB_UE_X2AP_ID() {return sgNB_UE_X2AP_ID;}
-       sgNB_UE_X2AP_ID_t const& ref_sgNB_UE_X2AP_ID() const {return sgNB_UE_X2AP_ID;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<UE_ContextReferenceAtSgNB_ItemExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<UE_ContextReferenceAtSgNB_ItemExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(source_GlobalSgNB_ID);
-               v(sgNB_UE_X2AP_ID);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(source_GlobalSgNB_ID);
-               v(sgNB_UE_X2AP_ID);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               source_GlobalSgNB_ID.clear();
-               sgNB_UE_X2AP_ID.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       source_GlobalSgNB_ID_t  source_GlobalSgNB_ID;
-       sgNB_UE_X2AP_ID_t       sgNB_UE_X2AP_ID;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-HandoverRequest-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-Old-eNB-UE-X2AP-ID                                      CRITICALITY reject      TYPE UE-X2AP-ID                                                         PRESENCE mandatory}|
-       { ID id-Cause                                                           CRITICALITY ignore      TYPE Cause                                                                      PRESENCE mandatory}|
-       { ID id-TargetCell-ID                                           CRITICALITY reject      TYPE ECGI                                                                       PRESENCE mandatory}|
-       { ID id-GUMMEI-ID                                                       CRITICALITY reject      TYPE GUMMEI                                                                     PRESENCE mandatory}|
-       { ID id-UE-ContextInformation                           CRITICALITY reject      TYPE UE-ContextInformation                                      PRESENCE mandatory}|
-       { ID id-UE-HistoryInformation                           CRITICALITY ignore      TYPE UE-HistoryInformation                                      PRESENCE mandatory}|
-       { ID id-TraceActivation                                         CRITICALITY ignore      TYPE TraceActivation                                            PRESENCE optional}|
-       { ID id-SRVCCOperationPossible                          CRITICALITY ignore      TYPE SRVCCOperationPossible                                     PRESENCE optional}|
-       { ID id-CSGMembershipStatus                                     CRITICALITY reject      TYPE CSGMembershipStatus                                        PRESENCE optional}|
-       { ID id-MobilityInformation                                     CRITICALITY ignore      TYPE MobilityInformation                                        PRESENCE optional}|
-       { ID id-Masked-IMEISV                                           CRITICALITY ignore      TYPE Masked-IMEISV                                                      PRESENCE optional}|
-       { ID id-UE-HistoryInformationFromTheUE          CRITICALITY ignore      TYPE UE-HistoryInformationFromTheUE             PRESENCE optional}|
-       { ID id-ExpectedUEBehaviour                                     CRITICALITY ignore      TYPE ExpectedUEBehaviour                                        PRESENCE optional}|
-       { ID id-ProSeAuthorized                                         CRITICALITY ignore      TYPE ProSeAuthorized                                            PRESENCE optional}|
-       { ID id-UE-ContextReferenceAtSeNB                       CRITICALITY ignore      TYPE UE-ContextReferenceAtSeNB                  PRESENCE optional}|
-       { ID id-Old-eNB-UE-X2AP-ID-Extension            CRITICALITY reject      TYPE UE-X2AP-ID-Extension                                       PRESENCE optional}|
-       { ID id-V2XServicesAuthorized                           CRITICALITY ignore      TYPE V2XServicesAuthorized                                      PRESENCE optional}|
-       { ID id-UE-ContextReferenceAtWT                         CRITICALITY ignore      TYPE UE-ContextReferenceAtWT                            PRESENCE optional}|
-       { ID id-NRUESecurityCapabilities                                CRITICALITY ignore      TYPE NRUESecurityCapabilities                           PRESENCE optional}|
-       { ID id-UE-ContextReferenceAtSgNB                       CRITICALITY ignore      TYPE UE-ContextReferenceAtSgNB                  PRESENCE optional}|
-       { ID id-AerialUEsubscriptionInformation         CRITICALITY ignore      TYPE AerialUEsubscriptionInformation    PRESENCE optional}|
-       { ID id-Subscription-Based-UE-DifferentiationInfo               CRITICALITY ignore      TYPE Subscription-Based-UE-DifferentiationInfo                          PRESENCE optional},
-       ...
-}
-*/
-
-struct HandoverRequest_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 23; }
-               void clear() {type = 0;}
-               void select_id_Old_eNB_UE_X2AP_ID() { set(id_Old_eNB_UE_X2AP_ID); type=1;}
-               void select_id_Cause() { set(id_Cause); type=2;}
-               void select_id_TargetCell_ID() { set(id_TargetCell_ID); type=3;}
-               void select_id_GUMMEI_ID() { set(id_GUMMEI_ID); type=4;}
-               void select_id_UE_ContextInformation() { set(id_UE_ContextInformation); type=5;}
-               void select_id_UE_HistoryInformation() { set(id_UE_HistoryInformation); type=6;}
-               void select_id_TraceActivation() { set(id_TraceActivation); type=7;}
-               void select_id_SRVCCOperationPossible() { set(id_SRVCCOperationPossible); type=8;}
-               void select_id_CSGMembershipStatus() { set(id_CSGMembershipStatus); type=9;}
-               void select_id_MobilityInformation() { set(id_MobilityInformation); type=10;}
-               void select_id_Masked_IMEISV() { set(id_Masked_IMEISV); type=11;}
-               void select_id_UE_HistoryInformationFromTheUE() { set(id_UE_HistoryInformationFromTheUE); type=12;}
-               void select_id_ExpectedUEBehaviour() { set(id_ExpectedUEBehaviour); type=13;}
-               void select_id_ProSeAuthorized() { set(id_ProSeAuthorized); type=14;}
-               void select_id_UE_ContextReferenceAtSeNB() { set(id_UE_ContextReferenceAtSeNB); type=15;}
-               void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(id_Old_eNB_UE_X2AP_ID_Extension); type=16;}
-               void select_id_V2XServicesAuthorized() { set(id_V2XServicesAuthorized); type=17;}
-               void select_id_UE_ContextReferenceAtWT() { set(id_UE_ContextReferenceAtWT); type=18;}
-               void select_id_NRUESecurityCapabilities() { set(id_NRUESecurityCapabilities); type=19;}
-               void select_id_UE_ContextReferenceAtSgNB() { set(id_UE_ContextReferenceAtSgNB); type=20;}
-               void select_id_AerialUEsubscriptionInformation() { set(id_AerialUEsubscriptionInformation); type=21;}
-               void select_id_Subscription_Based_UE_DifferentiationInfo() { set(id_Subscription_Based_UE_DifferentiationInfo); type=22;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_Old_eNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_Cause)) { type = 2; return true; }
-                       else if(equal(id_TargetCell_ID)) { type = 3; return true; }
-                       else if(equal(id_GUMMEI_ID)) { type = 4; return true; }
-                       else if(equal(id_UE_ContextInformation)) { type = 5; return true; }
-                       else if(equal(id_UE_HistoryInformation)) { type = 6; return true; }
-                       else if(equal(id_TraceActivation)) { type = 7; return true; }
-                       else if(equal(id_SRVCCOperationPossible)) { type = 8; return true; }
-                       else if(equal(id_CSGMembershipStatus)) { type = 9; return true; }
-                       else if(equal(id_MobilityInformation)) { type = 10; return true; }
-                       else if(equal(id_Masked_IMEISV)) { type = 11; return true; }
-                       else if(equal(id_UE_HistoryInformationFromTheUE)) { type = 12; return true; }
-                       else if(equal(id_ExpectedUEBehaviour)) { type = 13; return true; }
-                       else if(equal(id_ProSeAuthorized)) { type = 14; return true; }
-                       else if(equal(id_UE_ContextReferenceAtSeNB)) { type = 15; return true; }
-                       else if(equal(id_Old_eNB_UE_X2AP_ID_Extension)) { type = 16; return true; }
-                       else if(equal(id_V2XServicesAuthorized)) { type = 17; return true; }
-                       else if(equal(id_UE_ContextReferenceAtWT)) { type = 18; return true; }
-                       else if(equal(id_NRUESecurityCapabilities)) { type = 19; return true; }
-                       else if(equal(id_UE_ContextReferenceAtSgNB)) { type = 20; return true; }
-                       else if(equal(id_AerialUEsubscriptionInformation)) { type = 21; return true; }
-                       else if(equal(id_Subscription_Based_UE_DifferentiationInfo)) { type = 22; return true; }
-                       else { type = 23; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_Old_eNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_Cause);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_TargetCell_ID);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_GUMMEI_ID);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_UE_ContextInformation);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(id_UE_HistoryInformation);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(id_TraceActivation);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(id_SRVCCOperationPossible);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(id_CSGMembershipStatus);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(id_MobilityInformation);} return false;
-                       case 11: type = 11; if(v(ref_nested())) { return equal(id_Masked_IMEISV);} return false;
-                       case 12: type = 12; if(v(ref_nested())) { return equal(id_UE_HistoryInformationFromTheUE);} return false;
-                       case 13: type = 13; if(v(ref_nested())) { return equal(id_ExpectedUEBehaviour);} return false;
-                       case 14: type = 14; if(v(ref_nested())) { return equal(id_ProSeAuthorized);} return false;
-                       case 15: type = 15; if(v(ref_nested())) { return equal(id_UE_ContextReferenceAtSeNB);} return false;
-                       case 16: type = 16; if(v(ref_nested())) { return equal(id_Old_eNB_UE_X2AP_ID_Extension);} return false;
-                       case 17: type = 17; if(v(ref_nested())) { return equal(id_V2XServicesAuthorized);} return false;
-                       case 18: type = 18; if(v(ref_nested())) { return equal(id_UE_ContextReferenceAtWT);} return false;
-                       case 19: type = 19; if(v(ref_nested())) { return equal(id_NRUESecurityCapabilities);} return false;
-                       case 20: type = 20; if(v(ref_nested())) { return equal(id_UE_ContextReferenceAtSgNB);} return false;
-                       case 21: type = 21; if(v(ref_nested())) { return equal(id_AerialUEsubscriptionInformation);} return false;
-                       case 22: type = 22; if(v(ref_nested())) { return equal(id_Subscription_Based_UE_DifferentiationInfo);} return false;
-                       case 23: type = 23; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 23; }
-               void clear() {type = 0;}
-               void select_id_Old_eNB_UE_X2AP_ID() { set(reject); type=1;}
-               void select_id_Cause() { set(ignore); type=2;}
-               void select_id_TargetCell_ID() { set(reject); type=3;}
-               void select_id_GUMMEI_ID() { set(reject); type=4;}
-               void select_id_UE_ContextInformation() { set(reject); type=5;}
-               void select_id_UE_HistoryInformation() { set(ignore); type=6;}
-               void select_id_TraceActivation() { set(ignore); type=7;}
-               void select_id_SRVCCOperationPossible() { set(ignore); type=8;}
-               void select_id_CSGMembershipStatus() { set(reject); type=9;}
-               void select_id_MobilityInformation() { set(ignore); type=10;}
-               void select_id_Masked_IMEISV() { set(ignore); type=11;}
-               void select_id_UE_HistoryInformationFromTheUE() { set(ignore); type=12;}
-               void select_id_ExpectedUEBehaviour() { set(ignore); type=13;}
-               void select_id_ProSeAuthorized() { set(ignore); type=14;}
-               void select_id_UE_ContextReferenceAtSeNB() { set(ignore); type=15;}
-               void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(reject); type=16;}
-               void select_id_V2XServicesAuthorized() { set(ignore); type=17;}
-               void select_id_UE_ContextReferenceAtWT() { set(ignore); type=18;}
-               void select_id_NRUESecurityCapabilities() { set(ignore); type=19;}
-               void select_id_UE_ContextReferenceAtSgNB() { set(ignore); type=20;}
-               void select_id_AerialUEsubscriptionInformation() { set(ignore); type=21;}
-               void select_id_Subscription_Based_UE_DifferentiationInfo() { set(ignore); type=22;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(reject)) { type = 3; return true; }
-                       else if(equal(reject)) { type = 4; return true; }
-                       else if(equal(reject)) { type = 5; return true; }
-                       else if(equal(ignore)) { type = 6; return true; }
-                       else if(equal(ignore)) { type = 7; return true; }
-                       else if(equal(ignore)) { type = 8; return true; }
-                       else if(equal(reject)) { type = 9; return true; }
-                       else if(equal(ignore)) { type = 10; return true; }
-                       else if(equal(ignore)) { type = 11; return true; }
-                       else if(equal(ignore)) { type = 12; return true; }
-                       else if(equal(ignore)) { type = 13; return true; }
-                       else if(equal(ignore)) { type = 14; return true; }
-                       else if(equal(ignore)) { type = 15; return true; }
-                       else if(equal(reject)) { type = 16; return true; }
-                       else if(equal(ignore)) { type = 17; return true; }
-                       else if(equal(ignore)) { type = 18; return true; }
-                       else if(equal(ignore)) { type = 19; return true; }
-                       else if(equal(ignore)) { type = 20; return true; }
-                       else if(equal(ignore)) { type = 21; return true; }
-                       else if(equal(ignore)) { type = 22; return true; }
-                       else { type = 23; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 11: type = 11; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 12: type = 12; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 13: type = 13; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 14: type = 14; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 15: type = 15; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 16: type = 16; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 17: type = 17; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 18: type = 18; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 19: type = 19; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 20: type = 20; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 21: type = 21; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 22: type = 22; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 23: type = 23; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_Old_eNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_Old_eNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               Cause& select_id_Cause() { return set<Cause>(2); }
-               Cause const* get_id_Cause() const { return get<Cause>(2); }
-               ECGI& select_id_TargetCell_ID() { return set<ECGI>(3); }
-               ECGI const* get_id_TargetCell_ID() const { return get<ECGI>(3); }
-               GUMMEI& select_id_GUMMEI_ID() { return set<GUMMEI>(4); }
-               GUMMEI const* get_id_GUMMEI_ID() const { return get<GUMMEI>(4); }
-               UE_ContextInformation& select_id_UE_ContextInformation() { return set<UE_ContextInformation>(5); }
-               UE_ContextInformation const* get_id_UE_ContextInformation() const { return get<UE_ContextInformation>(5); }
-               UE_HistoryInformation& select_id_UE_HistoryInformation() { return set<UE_HistoryInformation>(6); }
-               UE_HistoryInformation const* get_id_UE_HistoryInformation() const { return get<UE_HistoryInformation>(6); }
-               TraceActivation& select_id_TraceActivation() { return set<TraceActivation>(7); }
-               TraceActivation const* get_id_TraceActivation() const { return get<TraceActivation>(7); }
-               SRVCCOperationPossible& select_id_SRVCCOperationPossible() { return set<SRVCCOperationPossible>(8); }
-               SRVCCOperationPossible const* get_id_SRVCCOperationPossible() const { return get<SRVCCOperationPossible>(8); }
-               CSGMembershipStatus& select_id_CSGMembershipStatus() { return set<CSGMembershipStatus>(9); }
-               CSGMembershipStatus const* get_id_CSGMembershipStatus() const { return get<CSGMembershipStatus>(9); }
-               MobilityInformation& select_id_MobilityInformation() { return set<MobilityInformation>(10); }
-               MobilityInformation const* get_id_MobilityInformation() const { return get<MobilityInformation>(10); }
-               Masked_IMEISV& select_id_Masked_IMEISV() { return set<Masked_IMEISV>(11); }
-               Masked_IMEISV const* get_id_Masked_IMEISV() const { return get<Masked_IMEISV>(11); }
-               UE_HistoryInformationFromTheUE& select_id_UE_HistoryInformationFromTheUE() { return set<UE_HistoryInformationFromTheUE>(12); }
-               UE_HistoryInformationFromTheUE const* get_id_UE_HistoryInformationFromTheUE() const { return get<UE_HistoryInformationFromTheUE>(12); }
-               ExpectedUEBehaviour& select_id_ExpectedUEBehaviour() { return set<ExpectedUEBehaviour>(13); }
-               ExpectedUEBehaviour const* get_id_ExpectedUEBehaviour() const { return get<ExpectedUEBehaviour>(13); }
-               ProSeAuthorized& select_id_ProSeAuthorized() { return set<ProSeAuthorized>(14); }
-               ProSeAuthorized const* get_id_ProSeAuthorized() const { return get<ProSeAuthorized>(14); }
-               UE_ContextReferenceAtSeNB& select_id_UE_ContextReferenceAtSeNB() { return set<UE_ContextReferenceAtSeNB>(15); }
-               UE_ContextReferenceAtSeNB const* get_id_UE_ContextReferenceAtSeNB() const { return get<UE_ContextReferenceAtSeNB>(15); }
-               UE_X2AP_ID_Extension& select_id_Old_eNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(16); }
-               UE_X2AP_ID_Extension const* get_id_Old_eNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(16); }
-               V2XServicesAuthorized& select_id_V2XServicesAuthorized() { return set<V2XServicesAuthorized>(17); }
-               V2XServicesAuthorized const* get_id_V2XServicesAuthorized() const { return get<V2XServicesAuthorized>(17); }
-               UE_ContextReferenceAtWT& select_id_UE_ContextReferenceAtWT() { return set<UE_ContextReferenceAtWT>(18); }
-               UE_ContextReferenceAtWT const* get_id_UE_ContextReferenceAtWT() const { return get<UE_ContextReferenceAtWT>(18); }
-               NRUESecurityCapabilities& select_id_NRUESecurityCapabilities() { return set<NRUESecurityCapabilities>(19); }
-               NRUESecurityCapabilities const* get_id_NRUESecurityCapabilities() const { return get<NRUESecurityCapabilities>(19); }
-               UE_ContextReferenceAtSgNB& select_id_UE_ContextReferenceAtSgNB() { return set<UE_ContextReferenceAtSgNB>(20); }
-               UE_ContextReferenceAtSgNB const* get_id_UE_ContextReferenceAtSgNB() const { return get<UE_ContextReferenceAtSgNB>(20); }
-               AerialUEsubscriptionInformation& select_id_AerialUEsubscriptionInformation() { return set<AerialUEsubscriptionInformation>(21); }
-               AerialUEsubscriptionInformation const* get_id_AerialUEsubscriptionInformation() const { return get<AerialUEsubscriptionInformation>(21); }
-               Subscription_Based_UE_DifferentiationInfo& select_id_Subscription_Based_UE_DifferentiationInfo() { return set<Subscription_Based_UE_DifferentiationInfo>(22); }
-               Subscription_Based_UE_DifferentiationInfo const* get_id_Subscription_Based_UE_DifferentiationInfo() const { return get<Subscription_Based_UE_DifferentiationInfo>(22); }
-               bool is_unknown() const { return type == 23; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<Cause>(); break;
-                       case 3: var.destroy<ECGI>(); break;
-                       case 4: var.destroy<GUMMEI>(); break;
-                       case 5: var.destroy<UE_ContextInformation>(); break;
-                       case 6: var.destroy<UE_HistoryInformation>(); break;
-                       case 7: var.destroy<TraceActivation>(); break;
-                       case 8: var.destroy<SRVCCOperationPossible>(); break;
-                       case 9: var.destroy<CSGMembershipStatus>(); break;
-                       case 10: var.destroy<MobilityInformation>(); break;
-                       case 11: var.destroy<Masked_IMEISV>(); break;
-                       case 12: var.destroy<UE_HistoryInformationFromTheUE>(); break;
-                       case 13: var.destroy<ExpectedUEBehaviour>(); break;
-                       case 14: var.destroy<ProSeAuthorized>(); break;
-                       case 15: var.destroy<UE_ContextReferenceAtSeNB>(); break;
-                       case 16: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 17: var.destroy<V2XServicesAuthorized>(); break;
-                       case 18: var.destroy<UE_ContextReferenceAtWT>(); break;
-                       case 19: var.destroy<NRUESecurityCapabilities>(); break;
-                       case 20: var.destroy<UE_ContextReferenceAtSgNB>(); break;
-                       case 21: var.destroy<AerialUEsubscriptionInformation>(); break;
-                       case 22: var.destroy<Subscription_Based_UE_DifferentiationInfo>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<Cause>(2);
-                       v.template operator()<ECGI>(3);
-                       v.template operator()<GUMMEI>(4);
-                       v.template operator()<UE_ContextInformation>(5);
-                       v.template operator()<UE_HistoryInformation>(6);
-                       v.template operator()<TraceActivation>(7);
-                       v.template operator()<SRVCCOperationPossible>(8);
-                       v.template operator()<CSGMembershipStatus>(9);
-                       v.template operator()<MobilityInformation>(10);
-                       v.template operator()<Masked_IMEISV>(11);
-                       v.template operator()<UE_HistoryInformationFromTheUE>(12);
-                       v.template operator()<ExpectedUEBehaviour>(13);
-                       v.template operator()<ProSeAuthorized>(14);
-                       v.template operator()<UE_ContextReferenceAtSeNB>(15);
-                       v.template operator()<UE_X2AP_ID_Extension>(16);
-                       v.template operator()<V2XServicesAuthorized>(17);
-                       v.template operator()<UE_ContextReferenceAtWT>(18);
-                       v.template operator()<NRUESecurityCapabilities>(19);
-                       v.template operator()<UE_ContextReferenceAtSgNB>(20);
-                       v.template operator()<AerialUEsubscriptionInformation>(21);
-                       v.template operator()<Subscription_Based_UE_DifferentiationInfo>(22);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_Old_eNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_Cause()); return true;
-                       case 3: v(select_id_TargetCell_ID()); return true;
-                       case 4: v(select_id_GUMMEI_ID()); return true;
-                       case 5: v(select_id_UE_ContextInformation()); return true;
-                       case 6: v(select_id_UE_HistoryInformation()); return true;
-                       case 7: v(select_id_TraceActivation()); return true;
-                       case 8: v(select_id_SRVCCOperationPossible()); return true;
-                       case 9: v(select_id_CSGMembershipStatus()); return true;
-                       case 10: v(select_id_MobilityInformation()); return true;
-                       case 11: v(select_id_Masked_IMEISV()); return true;
-                       case 12: v(select_id_UE_HistoryInformationFromTheUE()); return true;
-                       case 13: v(select_id_ExpectedUEBehaviour()); return true;
-                       case 14: v(select_id_ProSeAuthorized()); return true;
-                       case 15: v(select_id_UE_ContextReferenceAtSeNB()); return true;
-                       case 16: v(select_id_Old_eNB_UE_X2AP_ID_Extension()); return true;
-                       case 17: v(select_id_V2XServicesAuthorized()); return true;
-                       case 18: v(select_id_UE_ContextReferenceAtWT()); return true;
-                       case 19: v(select_id_NRUESecurityCapabilities()); return true;
-                       case 20: v(select_id_UE_ContextReferenceAtSgNB()); return true;
-                       case 21: v(select_id_AerialUEsubscriptionInformation()); return true;
-                       case 22: v(select_id_Subscription_Based_UE_DifferentiationInfo()); return true;
-                       case 23: if(type != 23) {clear(); asn::base::set();} type = 23; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<Cause>()); return true;
-                       case 3: v(var.as<ECGI>()); return true;
-                       case 4: v(var.as<GUMMEI>()); return true;
-                       case 5: v(var.as<UE_ContextInformation>()); return true;
-                       case 6: v(var.as<UE_HistoryInformation>()); return true;
-                       case 7: v(var.as<TraceActivation>()); return true;
-                       case 8: v(var.as<SRVCCOperationPossible>()); return true;
-                       case 9: v(var.as<CSGMembershipStatus>()); return true;
-                       case 10: v(var.as<MobilityInformation>()); return true;
-                       case 11: v(var.as<Masked_IMEISV>()); return true;
-                       case 12: v(var.as<UE_HistoryInformationFromTheUE>()); return true;
-                       case 13: v(var.as<ExpectedUEBehaviour>()); return true;
-                       case 14: v(var.as<ProSeAuthorized>()); return true;
-                       case 15: v(var.as<UE_ContextReferenceAtSeNB>()); return true;
-                       case 16: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 17: v(var.as<V2XServicesAuthorized>()); return true;
-                       case 18: v(var.as<UE_ContextReferenceAtWT>()); return true;
-                       case 19: v(var.as<NRUESecurityCapabilities>()); return true;
-                       case 20: v(var.as<UE_ContextReferenceAtSgNB>()); return true;
-                       case 21: v(var.as<AerialUEsubscriptionInformation>()); return true;
-                       case 22: v(var.as<Subscription_Based_UE_DifferentiationInfo>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(AerialUEsubscriptionInformation)];
-                       char dummy2[sizeof(CSGMembershipStatus)];
-                       char dummy3[sizeof(Cause)];
-                       char dummy4[sizeof(ECGI)];
-                       char dummy5[sizeof(ExpectedUEBehaviour)];
-                       char dummy6[sizeof(GUMMEI)];
-                       char dummy7[sizeof(Masked_IMEISV)];
-                       char dummy8[sizeof(MobilityInformation)];
-                       char dummy9[sizeof(NRUESecurityCapabilities)];
-                       char dummy10[sizeof(ProSeAuthorized)];
-                       char dummy11[sizeof(SRVCCOperationPossible)];
-                       char dummy12[sizeof(Subscription_Based_UE_DifferentiationInfo)];
-                       char dummy13[sizeof(TraceActivation)];
-                       char dummy14[sizeof(UE_ContextInformation)];
-                       char dummy15[sizeof(UE_ContextReferenceAtSeNB)];
-                       char dummy16[sizeof(UE_ContextReferenceAtSgNB)];
-                       char dummy17[sizeof(UE_ContextReferenceAtWT)];
-                       char dummy18[sizeof(UE_HistoryInformation)];
-                       char dummy19[sizeof(UE_HistoryInformationFromTheUE)];
-                       char dummy20[sizeof(UE_X2AP_ID)];
-                       char dummy21[sizeof(UE_X2AP_ID_Extension)];
-                       char dummy22[sizeof(V2XServicesAuthorized)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 23; }
-               void clear() {type = 0;}
-               void select_id_Old_eNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_Cause() { set(mandatory); type=2;}
-               void select_id_TargetCell_ID() { set(mandatory); type=3;}
-               void select_id_GUMMEI_ID() { set(mandatory); type=4;}
-               void select_id_UE_ContextInformation() { set(mandatory); type=5;}
-               void select_id_UE_HistoryInformation() { set(mandatory); type=6;}
-               void select_id_TraceActivation() { set(optional); type=7;}
-               void select_id_SRVCCOperationPossible() { set(optional); type=8;}
-               void select_id_CSGMembershipStatus() { set(optional); type=9;}
-               void select_id_MobilityInformation() { set(optional); type=10;}
-               void select_id_Masked_IMEISV() { set(optional); type=11;}
-               void select_id_UE_HistoryInformationFromTheUE() { set(optional); type=12;}
-               void select_id_ExpectedUEBehaviour() { set(optional); type=13;}
-               void select_id_ProSeAuthorized() { set(optional); type=14;}
-               void select_id_UE_ContextReferenceAtSeNB() { set(optional); type=15;}
-               void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(optional); type=16;}
-               void select_id_V2XServicesAuthorized() { set(optional); type=17;}
-               void select_id_UE_ContextReferenceAtWT() { set(optional); type=18;}
-               void select_id_NRUESecurityCapabilities() { set(optional); type=19;}
-               void select_id_UE_ContextReferenceAtSgNB() { set(optional); type=20;}
-               void select_id_AerialUEsubscriptionInformation() { set(optional); type=21;}
-               void select_id_Subscription_Based_UE_DifferentiationInfo() { set(optional); type=22;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else if(equal(mandatory)) { type = 4; return true; }
-                       else if(equal(mandatory)) { type = 5; return true; }
-                       else if(equal(mandatory)) { type = 6; return true; }
-                       else if(equal(optional)) { type = 7; return true; }
-                       else if(equal(optional)) { type = 8; return true; }
-                       else if(equal(optional)) { type = 9; return true; }
-                       else if(equal(optional)) { type = 10; return true; }
-                       else if(equal(optional)) { type = 11; return true; }
-                       else if(equal(optional)) { type = 12; return true; }
-                       else if(equal(optional)) { type = 13; return true; }
-                       else if(equal(optional)) { type = 14; return true; }
-                       else if(equal(optional)) { type = 15; return true; }
-                       else if(equal(optional)) { type = 16; return true; }
-                       else if(equal(optional)) { type = 17; return true; }
-                       else if(equal(optional)) { type = 18; return true; }
-                       else if(equal(optional)) { type = 19; return true; }
-                       else if(equal(optional)) { type = 20; return true; }
-                       else if(equal(optional)) { type = 21; return true; }
-                       else if(equal(optional)) { type = 22; return true; }
-                       else { type = 23; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 11: type = 11; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 12: type = 12; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 13: type = 13; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 14: type = 14; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 15: type = 15; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 16: type = 16; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 17: type = 17; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 18: type = 18; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 19: type = 19; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 20: type = 20; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 21: type = 21; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 22: type = 22; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 23: type = 23; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-HandoverRequest ::= SEQUENCE {
-       protocolIEs                     ProtocolIE-Container    {{HandoverRequest-IEs}},
-       ...
-}
-*/
-
-struct HandoverRequest : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "HandoverRequest";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<HandoverRequest_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<HandoverRequest_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-HandoverRequestAcknowledge-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-Old-eNB-UE-X2AP-ID                                                      CRITICALITY ignore      TYPE UE-X2AP-ID         PRESENCE mandatory}|
-       { ID id-New-eNB-UE-X2AP-ID                                                      CRITICALITY ignore      TYPE UE-X2AP-ID         PRESENCE mandatory}|
-       { ID id-E-RABs-Admitted-List                                            CRITICALITY ignore      TYPE E-RABs-Admitted-List       PRESENCE mandatory}|
-       { ID id-E-RABs-NotAdmitted-List                                         CRITICALITY ignore      TYPE E-RAB-List         PRESENCE optional}|
-       { ID id-TargeteNBtoSource-eNBTransparentContainer       CRITICALITY ignore      TYPE TargeteNBtoSource-eNBTransparentContainer  PRESENCE mandatory}|
-       { ID id-CriticalityDiagnostics                                          CRITICALITY ignore      TYPE CriticalityDiagnostics     PRESENCE optional}|
-       { ID id-UE-ContextKeptIndicator                                         CRITICALITY ignore      TYPE UE-ContextKeptIndicator    PRESENCE optional}|
-       { ID id-SeNB-UE-X2AP-ID-Extension                                       CRITICALITY ignore      TYPE UE-X2AP-ID-Extension       PRESENCE optional}|
-       { ID id-Old-eNB-UE-X2AP-ID-Extension                            CRITICALITY ignore      TYPE UE-X2AP-ID-Extension       PRESENCE optional}|
-       { ID id-New-eNB-UE-X2AP-ID-Extension                            CRITICALITY reject      TYPE UE-X2AP-ID-Extension       PRESENCE optional}|
-       { ID id-WT-UE-ContextKeptIndicator                                      CRITICALITY ignore      TYPE UE-ContextKeptIndicator    PRESENCE optional},
-       ...
-}
-*/
-
-struct HandoverRequestAcknowledge_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 12; }
-               void clear() {type = 0;}
-               void select_id_Old_eNB_UE_X2AP_ID() { set(id_Old_eNB_UE_X2AP_ID); type=1;}
-               void select_id_New_eNB_UE_X2AP_ID() { set(id_New_eNB_UE_X2AP_ID); type=2;}
-               void select_id_E_RABs_Admitted_List() { set(id_E_RABs_Admitted_List); type=3;}
-               void select_id_E_RABs_NotAdmitted_List() { set(id_E_RABs_NotAdmitted_List); type=4;}
-               void select_id_TargeteNBtoSource_eNBTransparentContainer() { set(id_TargeteNBtoSource_eNBTransparentContainer); type=5;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=6;}
-               void select_id_UE_ContextKeptIndicator() { set(id_UE_ContextKeptIndicator); type=7;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(id_SeNB_UE_X2AP_ID_Extension); type=8;}
-               void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(id_Old_eNB_UE_X2AP_ID_Extension); type=9;}
-               void select_id_New_eNB_UE_X2AP_ID_Extension() { set(id_New_eNB_UE_X2AP_ID_Extension); type=10;}
-               void select_id_WT_UE_ContextKeptIndicator() { set(id_WT_UE_ContextKeptIndicator); type=11;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_Old_eNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_New_eNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_E_RABs_Admitted_List)) { type = 3; return true; }
-                       else if(equal(id_E_RABs_NotAdmitted_List)) { type = 4; return true; }
-                       else if(equal(id_TargeteNBtoSource_eNBTransparentContainer)) { type = 5; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 6; return true; }
-                       else if(equal(id_UE_ContextKeptIndicator)) { type = 7; return true; }
-                       else if(equal(id_SeNB_UE_X2AP_ID_Extension)) { type = 8; return true; }
-                       else if(equal(id_Old_eNB_UE_X2AP_ID_Extension)) { type = 9; return true; }
-                       else if(equal(id_New_eNB_UE_X2AP_ID_Extension)) { type = 10; return true; }
-                       else if(equal(id_WT_UE_ContextKeptIndicator)) { type = 11; return true; }
-                       else { type = 12; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_Old_eNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_New_eNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_E_RABs_Admitted_List);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_E_RABs_NotAdmitted_List);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_TargeteNBtoSource_eNBTransparentContainer);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(id_UE_ContextKeptIndicator);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID_Extension);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(id_Old_eNB_UE_X2AP_ID_Extension);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(id_New_eNB_UE_X2AP_ID_Extension);} return false;
-                       case 11: type = 11; if(v(ref_nested())) { return equal(id_WT_UE_ContextKeptIndicator);} return false;
-                       case 12: type = 12; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 12; }
-               void clear() {type = 0;}
-               void select_id_Old_eNB_UE_X2AP_ID() { set(ignore); type=1;}
-               void select_id_New_eNB_UE_X2AP_ID() { set(ignore); type=2;}
-               void select_id_E_RABs_Admitted_List() { set(ignore); type=3;}
-               void select_id_E_RABs_NotAdmitted_List() { set(ignore); type=4;}
-               void select_id_TargeteNBtoSource_eNBTransparentContainer() { set(ignore); type=5;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=6;}
-               void select_id_UE_ContextKeptIndicator() { set(ignore); type=7;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(ignore); type=8;}
-               void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(ignore); type=9;}
-               void select_id_New_eNB_UE_X2AP_ID_Extension() { set(reject); type=10;}
-               void select_id_WT_UE_ContextKeptIndicator() { set(ignore); type=11;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else if(equal(ignore)) { type = 5; return true; }
-                       else if(equal(ignore)) { type = 6; return true; }
-                       else if(equal(ignore)) { type = 7; return true; }
-                       else if(equal(ignore)) { type = 8; return true; }
-                       else if(equal(ignore)) { type = 9; return true; }
-                       else if(equal(reject)) { type = 10; return true; }
-                       else if(equal(ignore)) { type = 11; return true; }
-                       else { type = 12; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 11: type = 11; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 12: type = 12; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_Old_eNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_Old_eNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               UE_X2AP_ID& select_id_New_eNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(2); }
-               UE_X2AP_ID const* get_id_New_eNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(2); }
-               E_RABs_Admitted_List& select_id_E_RABs_Admitted_List() { return set<E_RABs_Admitted_List>(3); }
-               E_RABs_Admitted_List const* get_id_E_RABs_Admitted_List() const { return get<E_RABs_Admitted_List>(3); }
-               E_RAB_List& select_id_E_RABs_NotAdmitted_List() { return set<E_RAB_List>(4); }
-               E_RAB_List const* get_id_E_RABs_NotAdmitted_List() const { return get<E_RAB_List>(4); }
-               TargeteNBtoSource_eNBTransparentContainer& select_id_TargeteNBtoSource_eNBTransparentContainer() { return set<TargeteNBtoSource_eNBTransparentContainer>(5); }
-               TargeteNBtoSource_eNBTransparentContainer const* get_id_TargeteNBtoSource_eNBTransparentContainer() const { return get<TargeteNBtoSource_eNBTransparentContainer>(5); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(6); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(6); }
-               UE_ContextKeptIndicator& select_id_UE_ContextKeptIndicator() { return set<UE_ContextKeptIndicator>(7); }
-               UE_ContextKeptIndicator const* get_id_UE_ContextKeptIndicator() const { return get<UE_ContextKeptIndicator>(7); }
-               UE_X2AP_ID_Extension& select_id_SeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(8); }
-               UE_X2AP_ID_Extension const* get_id_SeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(8); }
-               UE_X2AP_ID_Extension& select_id_Old_eNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(9); }
-               UE_X2AP_ID_Extension const* get_id_Old_eNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(9); }
-               UE_X2AP_ID_Extension& select_id_New_eNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(10); }
-               UE_X2AP_ID_Extension const* get_id_New_eNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(10); }
-               UE_ContextKeptIndicator& select_id_WT_UE_ContextKeptIndicator() { return set<UE_ContextKeptIndicator>(11); }
-               UE_ContextKeptIndicator const* get_id_WT_UE_ContextKeptIndicator() const { return get<UE_ContextKeptIndicator>(11); }
-               bool is_unknown() const { return type == 12; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<UE_X2AP_ID>(); break;
-                       case 3: var.destroy<E_RABs_Admitted_List>(); break;
-                       case 4: var.destroy<E_RAB_List>(); break;
-                       case 5: var.destroy<TargeteNBtoSource_eNBTransparentContainer>(); break;
-                       case 6: var.destroy<CriticalityDiagnostics>(); break;
-                       case 7: var.destroy<UE_ContextKeptIndicator>(); break;
-                       case 8: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 9: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 10: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 11: var.destroy<UE_ContextKeptIndicator>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<UE_X2AP_ID>(2);
-                       v.template operator()<E_RABs_Admitted_List>(3);
-                       v.template operator()<E_RAB_List>(4);
-                       v.template operator()<TargeteNBtoSource_eNBTransparentContainer>(5);
-                       v.template operator()<CriticalityDiagnostics>(6);
-                       v.template operator()<UE_ContextKeptIndicator>(7);
-                       v.template operator()<UE_X2AP_ID_Extension>(8);
-                       v.template operator()<UE_X2AP_ID_Extension>(9);
-                       v.template operator()<UE_X2AP_ID_Extension>(10);
-                       v.template operator()<UE_ContextKeptIndicator>(11);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_Old_eNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_New_eNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_E_RABs_Admitted_List()); return true;
-                       case 4: v(select_id_E_RABs_NotAdmitted_List()); return true;
-                       case 5: v(select_id_TargeteNBtoSource_eNBTransparentContainer()); return true;
-                       case 6: v(select_id_CriticalityDiagnostics()); return true;
-                       case 7: v(select_id_UE_ContextKeptIndicator()); return true;
-                       case 8: v(select_id_SeNB_UE_X2AP_ID_Extension()); return true;
-                       case 9: v(select_id_Old_eNB_UE_X2AP_ID_Extension()); return true;
-                       case 10: v(select_id_New_eNB_UE_X2AP_ID_Extension()); return true;
-                       case 11: v(select_id_WT_UE_ContextKeptIndicator()); return true;
-                       case 12: if(type != 12) {clear(); asn::base::set();} type = 12; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<E_RABs_Admitted_List>()); return true;
-                       case 4: v(var.as<E_RAB_List>()); return true;
-                       case 5: v(var.as<TargeteNBtoSource_eNBTransparentContainer>()); return true;
-                       case 6: v(var.as<CriticalityDiagnostics>()); return true;
-                       case 7: v(var.as<UE_ContextKeptIndicator>()); return true;
-                       case 8: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 9: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 10: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 11: v(var.as<UE_ContextKeptIndicator>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(CriticalityDiagnostics)];
-                       char dummy2[sizeof(E_RAB_List)];
-                       char dummy3[sizeof(E_RABs_Admitted_List)];
-                       char dummy4[sizeof(TargeteNBtoSource_eNBTransparentContainer)];
-                       char dummy5[sizeof(UE_ContextKeptIndicator)];
-                       char dummy6[sizeof(UE_X2AP_ID)];
-                       char dummy7[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 12; }
-               void clear() {type = 0;}
-               void select_id_Old_eNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_New_eNB_UE_X2AP_ID() { set(mandatory); type=2;}
-               void select_id_E_RABs_Admitted_List() { set(mandatory); type=3;}
-               void select_id_E_RABs_NotAdmitted_List() { set(optional); type=4;}
-               void select_id_TargeteNBtoSource_eNBTransparentContainer() { set(mandatory); type=5;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=6;}
-               void select_id_UE_ContextKeptIndicator() { set(optional); type=7;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(optional); type=8;}
-               void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(optional); type=9;}
-               void select_id_New_eNB_UE_X2AP_ID_Extension() { set(optional); type=10;}
-               void select_id_WT_UE_ContextKeptIndicator() { set(optional); type=11;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(mandatory)) { type = 5; return true; }
-                       else if(equal(optional)) { type = 6; return true; }
-                       else if(equal(optional)) { type = 7; return true; }
-                       else if(equal(optional)) { type = 8; return true; }
-                       else if(equal(optional)) { type = 9; return true; }
-                       else if(equal(optional)) { type = 10; return true; }
-                       else if(equal(optional)) { type = 11; return true; }
-                       else { type = 12; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 11: type = 11; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 12: type = 12; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-HandoverRequestAcknowledge ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{HandoverRequestAcknowledge-IEs}},
-       ...
-}
-*/
-
-struct HandoverRequestAcknowledge : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "HandoverRequestAcknowledge";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<HandoverRequestAcknowledge_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<HandoverRequestAcknowledge_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-LoadInformation-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-CellInformation                         CRITICALITY ignore      TYPE CellInformation-List               PRESENCE mandatory} ,
-       ...
-}
-*/
-
-struct LoadInformation_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_CellInformation() { set(id_CellInformation); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_CellInformation)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_CellInformation);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_CellInformation() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               CellInformation_List& select_id_CellInformation() { return set<CellInformation_List>(1); }
-               CellInformation_List const* get_id_CellInformation() const { return get<CellInformation_List>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<CellInformation_List>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<CellInformation_List>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_CellInformation()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<CellInformation_List>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(CellInformation_List)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_CellInformation() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-LoadInformation ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{LoadInformation-IEs}},
-       ...
-}
-*/
-
-struct LoadInformation : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "LoadInformation";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<LoadInformation_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<LoadInformation_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-MeasurementInitiationResult-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct MeasurementInitiationResult_Item_ExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-MeasurementInitiationResult-Item ::= SEQUENCE {
-       cell-ID                                                                                 ECGI,
-       measurementFailureCause-List                                    MeasurementFailureCause-List    OPTIONAL,
-       iE-Extensions                                                                   ProtocolExtensionContainer { {MeasurementInitiationResult-Item-ExtIEs} }        OPTIONAL,
-       ...
-}
-*/
-
-struct MeasurementInitiationResult_Item : asn::sequence<3, 0, true, 2>
-{
-       static constexpr const char* name() {return "MeasurementInitiationResult-Item";}
-       using parent_t = asn::sequence<3, 0, true, 2>;
-       struct cell_ID_t : ECGI
-       {
-               static constexpr const char* name() {return "cell_ID_t";}
-               using parent_t = ECGI;
-
-       };
-       cell_ID_t& ref_cell_ID() {return cell_ID;}
-       cell_ID_t const& ref_cell_ID() const {return cell_ID;}
-       struct measurementFailureCause_List_t : MeasurementFailureCause_List
-       {
-               static constexpr const char* name() {return "measurementFailureCause_List_t";}
-               using parent_t = MeasurementFailureCause_List;
-               static constexpr bool optional = true;
-
-       };
-       measurementFailureCause_List_t& set_measurementFailureCause_List() { measurementFailureCause_List.setpresent(true); return measurementFailureCause_List;}
-       measurementFailureCause_List_t const* get_measurementFailureCause_List() const {return measurementFailureCause_List.is_valid() ? &measurementFailureCause_List : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<MeasurementInitiationResult_Item_ExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<MeasurementInitiationResult_Item_ExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(cell_ID);
-               v(measurementFailureCause_List);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(cell_ID);
-               v(measurementFailureCause_List);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               cell_ID.clear();
-               measurementFailureCause_List.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       cell_ID_t       cell_ID;
-       measurementFailureCause_List_t  measurementFailureCause_List;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-MeasurementInitiationResult-ItemIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-MeasurementInitiationResult-Item        CRITICALITY ignore      TYPE MeasurementInitiationResult-Item   PRESENCE mandatory}
-}
-*/
-
-struct MeasurementInitiationResult_ItemIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_MeasurementInitiationResult_Item() { set(id_MeasurementInitiationResult_Item); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_MeasurementInitiationResult_Item)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_MeasurementInitiationResult_Item);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_MeasurementInitiationResult_Item() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<false>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               MeasurementInitiationResult_Item& select_id_MeasurementInitiationResult_Item() { return set<MeasurementInitiationResult_Item>(1); }
-               MeasurementInitiationResult_Item const* get_id_MeasurementInitiationResult_Item() const { return get<MeasurementInitiationResult_Item>(1); }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<MeasurementInitiationResult_Item>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<MeasurementInitiationResult_Item>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_MeasurementInitiationResult_Item()); return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<MeasurementInitiationResult_Item>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(MeasurementInitiationResult_Item)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, false>
-       {
-               size_t get_index() const {return type;}
-               void clear() {type = 0;}
-               void select_id_MeasurementInitiationResult_Item() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-MeasurementInitiationResult-List ::= SEQUENCE (SIZE (1..maxCellineNB)) OF ProtocolIE-Single-Container { {MeasurementInitiationResult-ItemIEs} }
-*/
-
-struct MeasurementInitiationResult_List_elm : ProtocolIE_Single_Container<MeasurementInitiationResult_ItemIEs>
-{
-       static constexpr const char* name() {return "MeasurementInitiationResult_List_elm";}
-       using parent_t = ProtocolIE_Single_Container<MeasurementInitiationResult_ItemIEs>;
-
-};
-struct MeasurementInitiationResult_List : asn::sequenceof<MeasurementInitiationResult_List_elm>
-{
-       static constexpr const char* name() {return "MeasurementInitiationResult-List";}
-       using parent_t = asn::sequenceof<MeasurementInitiationResult_List_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxCellineNB >>;
-
-};
-/*
-MobilityChangeAcknowledge-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-ENB1-Cell-ID                    CRITICALITY reject      TYPE ECGI                                                       PRESENCE mandatory}|
-       { ID id-ENB2-Cell-ID                    CRITICALITY reject      TYPE ECGI                                                       PRESENCE mandatory}|
-       { ID id-CriticalityDiagnostics  CRITICALITY ignore      TYPE CriticalityDiagnostics                     PRESENCE optional},
-       ...
-}
-*/
-
-struct MobilityChangeAcknowledge_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_ENB1_Cell_ID() { set(id_ENB1_Cell_ID); type=1;}
-               void select_id_ENB2_Cell_ID() { set(id_ENB2_Cell_ID); type=2;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=3;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_ENB1_Cell_ID)) { type = 1; return true; }
-                       else if(equal(id_ENB2_Cell_ID)) { type = 2; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_ENB1_Cell_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_ENB2_Cell_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_ENB1_Cell_ID() { set(reject); type=1;}
-               void select_id_ENB2_Cell_ID() { set(reject); type=2;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=3;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               ECGI& select_id_ENB1_Cell_ID() { return set<ECGI>(1); }
-               ECGI const* get_id_ENB1_Cell_ID() const { return get<ECGI>(1); }
-               ECGI& select_id_ENB2_Cell_ID() { return set<ECGI>(2); }
-               ECGI const* get_id_ENB2_Cell_ID() const { return get<ECGI>(2); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(3); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(3); }
-               bool is_unknown() const { return type == 4; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<ECGI>(); break;
-                       case 2: var.destroy<ECGI>(); break;
-                       case 3: var.destroy<CriticalityDiagnostics>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<ECGI>(1);
-                       v.template operator()<ECGI>(2);
-                       v.template operator()<CriticalityDiagnostics>(3);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_ENB1_Cell_ID()); return true;
-                       case 2: v(select_id_ENB2_Cell_ID()); return true;
-                       case 3: v(select_id_CriticalityDiagnostics()); return true;
-                       case 4: if(type != 4) {clear(); asn::base::set();} type = 4; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<ECGI>()); return true;
-                       case 2: v(var.as<ECGI>()); return true;
-                       case 3: v(var.as<CriticalityDiagnostics>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(CriticalityDiagnostics)];
-                       char dummy2[sizeof(ECGI)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_ENB1_Cell_ID() { set(mandatory); type=1;}
-               void select_id_ENB2_Cell_ID() { set(mandatory); type=2;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=3;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(optional)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-MobilityChangeAcknowledge ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{MobilityChangeAcknowledge-IEs}},
-       ...
-}
-*/
-
-struct MobilityChangeAcknowledge : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "MobilityChangeAcknowledge";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<MobilityChangeAcknowledge_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<MobilityChangeAcknowledge_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-MobilityChangeFailure-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-ENB1-Cell-ID                                                                    CRITICALITY ignore      TYPE ECGI                                                                                               PRESENCE mandatory}|
-       { ID id-ENB2-Cell-ID                                                                    CRITICALITY ignore      TYPE ECGI                                                                                               PRESENCE mandatory}|
-       { ID id-Cause                                                                                   CRITICALITY ignore      TYPE Cause                                                                                              PRESENCE mandatory}|
-       { ID id-ENB2-Mobility-Parameters-Modification-Range             CRITICALITY ignore      TYPE MobilityParametersModificationRange                PRESENCE optional}|
-       { ID id-CriticalityDiagnostics                                                  CRITICALITY ignore      TYPE CriticalityDiagnostics                                             PRESENCE optional},
-       ...
-}
-*/
-
-struct MobilityChangeFailure_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_ENB1_Cell_ID() { set(id_ENB1_Cell_ID); type=1;}
-               void select_id_ENB2_Cell_ID() { set(id_ENB2_Cell_ID); type=2;}
-               void select_id_Cause() { set(id_Cause); type=3;}
-               void select_id_ENB2_Mobility_Parameters_Modification_Range() { set(id_ENB2_Mobility_Parameters_Modification_Range); type=4;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=5;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_ENB1_Cell_ID)) { type = 1; return true; }
-                       else if(equal(id_ENB2_Cell_ID)) { type = 2; return true; }
-                       else if(equal(id_Cause)) { type = 3; return true; }
-                       else if(equal(id_ENB2_Mobility_Parameters_Modification_Range)) { type = 4; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_ENB1_Cell_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_ENB2_Cell_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_ENB2_Mobility_Parameters_Modification_Range);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_ENB1_Cell_ID() { set(ignore); type=1;}
-               void select_id_ENB2_Cell_ID() { set(ignore); type=2;}
-               void select_id_Cause() { set(ignore); type=3;}
-               void select_id_ENB2_Mobility_Parameters_Modification_Range() { set(ignore); type=4;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=5;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else if(equal(ignore)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               ECGI& select_id_ENB1_Cell_ID() { return set<ECGI>(1); }
-               ECGI const* get_id_ENB1_Cell_ID() const { return get<ECGI>(1); }
-               ECGI& select_id_ENB2_Cell_ID() { return set<ECGI>(2); }
-               ECGI const* get_id_ENB2_Cell_ID() const { return get<ECGI>(2); }
-               Cause& select_id_Cause() { return set<Cause>(3); }
-               Cause const* get_id_Cause() const { return get<Cause>(3); }
-               MobilityParametersModificationRange& select_id_ENB2_Mobility_Parameters_Modification_Range() { return set<MobilityParametersModificationRange>(4); }
-               MobilityParametersModificationRange const* get_id_ENB2_Mobility_Parameters_Modification_Range() const { return get<MobilityParametersModificationRange>(4); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(5); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(5); }
-               bool is_unknown() const { return type == 6; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<ECGI>(); break;
-                       case 2: var.destroy<ECGI>(); break;
-                       case 3: var.destroy<Cause>(); break;
-                       case 4: var.destroy<MobilityParametersModificationRange>(); break;
-                       case 5: var.destroy<CriticalityDiagnostics>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<ECGI>(1);
-                       v.template operator()<ECGI>(2);
-                       v.template operator()<Cause>(3);
-                       v.template operator()<MobilityParametersModificationRange>(4);
-                       v.template operator()<CriticalityDiagnostics>(5);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_ENB1_Cell_ID()); return true;
-                       case 2: v(select_id_ENB2_Cell_ID()); return true;
-                       case 3: v(select_id_Cause()); return true;
-                       case 4: v(select_id_ENB2_Mobility_Parameters_Modification_Range()); return true;
-                       case 5: v(select_id_CriticalityDiagnostics()); return true;
-                       case 6: if(type != 6) {clear(); asn::base::set();} type = 6; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<ECGI>()); return true;
-                       case 2: v(var.as<ECGI>()); return true;
-                       case 3: v(var.as<Cause>()); return true;
-                       case 4: v(var.as<MobilityParametersModificationRange>()); return true;
-                       case 5: v(var.as<CriticalityDiagnostics>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(Cause)];
-                       char dummy2[sizeof(CriticalityDiagnostics)];
-                       char dummy3[sizeof(ECGI)];
-                       char dummy4[sizeof(MobilityParametersModificationRange)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_ENB1_Cell_ID() { set(mandatory); type=1;}
-               void select_id_ENB2_Cell_ID() { set(mandatory); type=2;}
-               void select_id_Cause() { set(mandatory); type=3;}
-               void select_id_ENB2_Mobility_Parameters_Modification_Range() { set(optional); type=4;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=5;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-MobilityChangeFailure ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{MobilityChangeFailure-IEs}},
-       ...
-}
-*/
-
-struct MobilityChangeFailure : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "MobilityChangeFailure";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<MobilityChangeFailure_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<MobilityChangeFailure_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-MobilityChangeRequest-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-ENB1-Cell-ID                                            CRITICALITY reject      TYPE ECGI                                                                                       PRESENCE mandatory}|
-       { ID id-ENB2-Cell-ID                                            CRITICALITY reject      TYPE ECGI                                                                                       PRESENCE mandatory}|
-       { ID id-ENB1-Mobility-Parameters                        CRITICALITY ignore      TYPE MobilityParametersInformation                              PRESENCE optional}|
-       { ID id-ENB2-Proposed-Mobility-Parameters       CRITICALITY reject      TYPE MobilityParametersInformation                              PRESENCE mandatory}|
-       { ID id-Cause                                                           CRITICALITY reject      TYPE Cause                                                                                      PRESENCE mandatory},
-       ...
-}
-*/
-
-struct MobilityChangeRequest_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_ENB1_Cell_ID() { set(id_ENB1_Cell_ID); type=1;}
-               void select_id_ENB2_Cell_ID() { set(id_ENB2_Cell_ID); type=2;}
-               void select_id_ENB1_Mobility_Parameters() { set(id_ENB1_Mobility_Parameters); type=3;}
-               void select_id_ENB2_Proposed_Mobility_Parameters() { set(id_ENB2_Proposed_Mobility_Parameters); type=4;}
-               void select_id_Cause() { set(id_Cause); type=5;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_ENB1_Cell_ID)) { type = 1; return true; }
-                       else if(equal(id_ENB2_Cell_ID)) { type = 2; return true; }
-                       else if(equal(id_ENB1_Mobility_Parameters)) { type = 3; return true; }
-                       else if(equal(id_ENB2_Proposed_Mobility_Parameters)) { type = 4; return true; }
-                       else if(equal(id_Cause)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_ENB1_Cell_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_ENB2_Cell_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_ENB1_Mobility_Parameters);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_ENB2_Proposed_Mobility_Parameters);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_Cause);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_ENB1_Cell_ID() { set(reject); type=1;}
-               void select_id_ENB2_Cell_ID() { set(reject); type=2;}
-               void select_id_ENB1_Mobility_Parameters() { set(ignore); type=3;}
-               void select_id_ENB2_Proposed_Mobility_Parameters() { set(reject); type=4;}
-               void select_id_Cause() { set(reject); type=5;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(reject)) { type = 4; return true; }
-                       else if(equal(reject)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               ECGI& select_id_ENB1_Cell_ID() { return set<ECGI>(1); }
-               ECGI const* get_id_ENB1_Cell_ID() const { return get<ECGI>(1); }
-               ECGI& select_id_ENB2_Cell_ID() { return set<ECGI>(2); }
-               ECGI const* get_id_ENB2_Cell_ID() const { return get<ECGI>(2); }
-               MobilityParametersInformation& select_id_ENB1_Mobility_Parameters() { return set<MobilityParametersInformation>(3); }
-               MobilityParametersInformation const* get_id_ENB1_Mobility_Parameters() const { return get<MobilityParametersInformation>(3); }
-               MobilityParametersInformation& select_id_ENB2_Proposed_Mobility_Parameters() { return set<MobilityParametersInformation>(4); }
-               MobilityParametersInformation const* get_id_ENB2_Proposed_Mobility_Parameters() const { return get<MobilityParametersInformation>(4); }
-               Cause& select_id_Cause() { return set<Cause>(5); }
-               Cause const* get_id_Cause() const { return get<Cause>(5); }
-               bool is_unknown() const { return type == 6; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<ECGI>(); break;
-                       case 2: var.destroy<ECGI>(); break;
-                       case 3: var.destroy<MobilityParametersInformation>(); break;
-                       case 4: var.destroy<MobilityParametersInformation>(); break;
-                       case 5: var.destroy<Cause>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<ECGI>(1);
-                       v.template operator()<ECGI>(2);
-                       v.template operator()<MobilityParametersInformation>(3);
-                       v.template operator()<MobilityParametersInformation>(4);
-                       v.template operator()<Cause>(5);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_ENB1_Cell_ID()); return true;
-                       case 2: v(select_id_ENB2_Cell_ID()); return true;
-                       case 3: v(select_id_ENB1_Mobility_Parameters()); return true;
-                       case 4: v(select_id_ENB2_Proposed_Mobility_Parameters()); return true;
-                       case 5: v(select_id_Cause()); return true;
-                       case 6: if(type != 6) {clear(); asn::base::set();} type = 6; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<ECGI>()); return true;
-                       case 2: v(var.as<ECGI>()); return true;
-                       case 3: v(var.as<MobilityParametersInformation>()); return true;
-                       case 4: v(var.as<MobilityParametersInformation>()); return true;
-                       case 5: v(var.as<Cause>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(Cause)];
-                       char dummy2[sizeof(ECGI)];
-                       char dummy3[sizeof(MobilityParametersInformation)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_ENB1_Cell_ID() { set(mandatory); type=1;}
-               void select_id_ENB2_Cell_ID() { set(mandatory); type=2;}
-               void select_id_ENB1_Mobility_Parameters() { set(optional); type=3;}
-               void select_id_ENB2_Proposed_Mobility_Parameters() { set(mandatory); type=4;}
-               void select_id_Cause() { set(mandatory); type=5;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(optional)) { type = 3; return true; }
-                       else if(equal(mandatory)) { type = 4; return true; }
-                       else if(equal(mandatory)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-MobilityChangeRequest ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{MobilityChangeRequest-IEs}},
-       ...
-}
-*/
-
-struct MobilityChangeRequest : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "MobilityChangeRequest";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<MobilityChangeRequest_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<MobilityChangeRequest_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-PartialSuccessIndicator ::= ENUMERATED {
-       partial-success-allowed,
-...
-}
-*/
-
-struct PartialSuccessIndicator : asn::enumerated<1, 0, true>
-{
-       static constexpr const char* name() {return "PartialSuccessIndicator";}
-       using parent_t = asn::enumerated<1, 0, true>;
-       typedef enum {
-               partial_success_allowed
-       } index_t;
-
-};
-
-/*
-PrivateMessage-IEs X2AP-PRIVATE-IES ::= {
-       ...
-}
-*/
-
-struct PrivateMessage_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PRIVATE_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PRIVATE_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PRIVATE_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PRIVATE_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PRIVATE_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PRIVATE_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-PrivateMessage ::= SEQUENCE {
-       privateIEs              PrivateIE-Container     {{PrivateMessage-IEs}},
-       ...
-}
-*/
-
-struct PrivateMessage : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "PrivateMessage";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct privateIEs_t : PrivateIE_Container<PrivateMessage_IEs>
-       {
-               static constexpr const char* name() {return "privateIEs_t";}
-               using parent_t = PrivateIE_Container<PrivateMessage_IEs>;
-
-       };
-       privateIEs_t& ref_privateIEs() {return privateIEs;}
-       privateIEs_t const& ref_privateIEs() const {return privateIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(privateIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(privateIEs);
-
-       };
-       void clear()
-       {
-               privateIEs.clear();
-
-       };
-       private:
-       privateIEs_t    privateIEs;
-
-};
-/*
-RLFIndication-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-FailureCellPCI                                                          CRITICALITY ignore      TYPE PCI                                                                                                                PRESENCE mandatory}|
-       { ID id-Re-establishmentCellECGI                                        CRITICALITY ignore      TYPE ECGI                                                                                                               PRESENCE mandatory}|
-       { ID id-FailureCellCRNTI                                                        CRITICALITY ignore      TYPE CRNTI                                                                                                              PRESENCE mandatory}|
-       { ID id-ShortMAC-I                                                                      CRITICALITY ignore      TYPE ShortMAC-I                                                                                                 PRESENCE optional}|
-       { ID id-UE-RLF-Report-Container                                         CRITICALITY ignore      TYPE UE-RLF-Report-Container                                                            PRESENCE optional}|
-       { ID id-RRCConnSetupIndicator                                           CRITICALITY reject      TYPE RRCConnSetupIndicator                                                                      PRESENCE optional}|
-       { ID id-RRCConnReestabIndicator                                         CRITICALITY ignore      TYPE RRCConnReestabIndicator                                                            PRESENCE optional}|
-       { ID id-UE-RLF-Report-Container-for-extended-bands      CRITICALITY ignore      TYPE UE-RLF-Report-Container-for-extended-bands         PRESENCE optional},
-       ...
-}
-*/
-
-struct RLFIndication_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 9; }
-               void clear() {type = 0;}
-               void select_id_FailureCellPCI() { set(id_FailureCellPCI); type=1;}
-               void select_id_Re_establishmentCellECGI() { set(id_Re_establishmentCellECGI); type=2;}
-               void select_id_FailureCellCRNTI() { set(id_FailureCellCRNTI); type=3;}
-               void select_id_ShortMAC_I() { set(id_ShortMAC_I); type=4;}
-               void select_id_UE_RLF_Report_Container() { set(id_UE_RLF_Report_Container); type=5;}
-               void select_id_RRCConnSetupIndicator() { set(id_RRCConnSetupIndicator); type=6;}
-               void select_id_RRCConnReestabIndicator() { set(id_RRCConnReestabIndicator); type=7;}
-               void select_id_UE_RLF_Report_Container_for_extended_bands() { set(id_UE_RLF_Report_Container_for_extended_bands); type=8;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_FailureCellPCI)) { type = 1; return true; }
-                       else if(equal(id_Re_establishmentCellECGI)) { type = 2; return true; }
-                       else if(equal(id_FailureCellCRNTI)) { type = 3; return true; }
-                       else if(equal(id_ShortMAC_I)) { type = 4; return true; }
-                       else if(equal(id_UE_RLF_Report_Container)) { type = 5; return true; }
-                       else if(equal(id_RRCConnSetupIndicator)) { type = 6; return true; }
-                       else if(equal(id_RRCConnReestabIndicator)) { type = 7; return true; }
-                       else if(equal(id_UE_RLF_Report_Container_for_extended_bands)) { type = 8; return true; }
-                       else { type = 9; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_FailureCellPCI);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_Re_establishmentCellECGI);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_FailureCellCRNTI);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_ShortMAC_I);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_UE_RLF_Report_Container);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(id_RRCConnSetupIndicator);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(id_RRCConnReestabIndicator);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(id_UE_RLF_Report_Container_for_extended_bands);} return false;
-                       case 9: type = 9; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 9; }
-               void clear() {type = 0;}
-               void select_id_FailureCellPCI() { set(ignore); type=1;}
-               void select_id_Re_establishmentCellECGI() { set(ignore); type=2;}
-               void select_id_FailureCellCRNTI() { set(ignore); type=3;}
-               void select_id_ShortMAC_I() { set(ignore); type=4;}
-               void select_id_UE_RLF_Report_Container() { set(ignore); type=5;}
-               void select_id_RRCConnSetupIndicator() { set(reject); type=6;}
-               void select_id_RRCConnReestabIndicator() { set(ignore); type=7;}
-               void select_id_UE_RLF_Report_Container_for_extended_bands() { set(ignore); type=8;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else if(equal(ignore)) { type = 5; return true; }
-                       else if(equal(reject)) { type = 6; return true; }
-                       else if(equal(ignore)) { type = 7; return true; }
-                       else if(equal(ignore)) { type = 8; return true; }
-                       else { type = 9; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 9: type = 9; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               PCI& select_id_FailureCellPCI() { return set<PCI>(1); }
-               PCI const* get_id_FailureCellPCI() const { return get<PCI>(1); }
-               ECGI& select_id_Re_establishmentCellECGI() { return set<ECGI>(2); }
-               ECGI const* get_id_Re_establishmentCellECGI() const { return get<ECGI>(2); }
-               CRNTI& select_id_FailureCellCRNTI() { return set<CRNTI>(3); }
-               CRNTI const* get_id_FailureCellCRNTI() const { return get<CRNTI>(3); }
-               ShortMAC_I& select_id_ShortMAC_I() { return set<ShortMAC_I>(4); }
-               ShortMAC_I const* get_id_ShortMAC_I() const { return get<ShortMAC_I>(4); }
-               UE_RLF_Report_Container& select_id_UE_RLF_Report_Container() { return set<UE_RLF_Report_Container>(5); }
-               UE_RLF_Report_Container const* get_id_UE_RLF_Report_Container() const { return get<UE_RLF_Report_Container>(5); }
-               RRCConnSetupIndicator& select_id_RRCConnSetupIndicator() { return set<RRCConnSetupIndicator>(6); }
-               RRCConnSetupIndicator const* get_id_RRCConnSetupIndicator() const { return get<RRCConnSetupIndicator>(6); }
-               RRCConnReestabIndicator& select_id_RRCConnReestabIndicator() { return set<RRCConnReestabIndicator>(7); }
-               RRCConnReestabIndicator const* get_id_RRCConnReestabIndicator() const { return get<RRCConnReestabIndicator>(7); }
-               UE_RLF_Report_Container_for_extended_bands& select_id_UE_RLF_Report_Container_for_extended_bands() { return set<UE_RLF_Report_Container_for_extended_bands>(8); }
-               UE_RLF_Report_Container_for_extended_bands const* get_id_UE_RLF_Report_Container_for_extended_bands() const { return get<UE_RLF_Report_Container_for_extended_bands>(8); }
-               bool is_unknown() const { return type == 9; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<PCI>(); break;
-                       case 2: var.destroy<ECGI>(); break;
-                       case 3: var.destroy<CRNTI>(); break;
-                       case 4: var.destroy<ShortMAC_I>(); break;
-                       case 5: var.destroy<UE_RLF_Report_Container>(); break;
-                       case 6: var.destroy<RRCConnSetupIndicator>(); break;
-                       case 7: var.destroy<RRCConnReestabIndicator>(); break;
-                       case 8: var.destroy<UE_RLF_Report_Container_for_extended_bands>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<PCI>(1);
-                       v.template operator()<ECGI>(2);
-                       v.template operator()<CRNTI>(3);
-                       v.template operator()<ShortMAC_I>(4);
-                       v.template operator()<UE_RLF_Report_Container>(5);
-                       v.template operator()<RRCConnSetupIndicator>(6);
-                       v.template operator()<RRCConnReestabIndicator>(7);
-                       v.template operator()<UE_RLF_Report_Container_for_extended_bands>(8);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_FailureCellPCI()); return true;
-                       case 2: v(select_id_Re_establishmentCellECGI()); return true;
-                       case 3: v(select_id_FailureCellCRNTI()); return true;
-                       case 4: v(select_id_ShortMAC_I()); return true;
-                       case 5: v(select_id_UE_RLF_Report_Container()); return true;
-                       case 6: v(select_id_RRCConnSetupIndicator()); return true;
-                       case 7: v(select_id_RRCConnReestabIndicator()); return true;
-                       case 8: v(select_id_UE_RLF_Report_Container_for_extended_bands()); return true;
-                       case 9: if(type != 9) {clear(); asn::base::set();} type = 9; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<PCI>()); return true;
-                       case 2: v(var.as<ECGI>()); return true;
-                       case 3: v(var.as<CRNTI>()); return true;
-                       case 4: v(var.as<ShortMAC_I>()); return true;
-                       case 5: v(var.as<UE_RLF_Report_Container>()); return true;
-                       case 6: v(var.as<RRCConnSetupIndicator>()); return true;
-                       case 7: v(var.as<RRCConnReestabIndicator>()); return true;
-                       case 8: v(var.as<UE_RLF_Report_Container_for_extended_bands>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(CRNTI)];
-                       char dummy2[sizeof(ECGI)];
-                       char dummy3[sizeof(PCI)];
-                       char dummy4[sizeof(RRCConnReestabIndicator)];
-                       char dummy5[sizeof(RRCConnSetupIndicator)];
-                       char dummy6[sizeof(ShortMAC_I)];
-                       char dummy7[sizeof(UE_RLF_Report_Container)];
-                       char dummy8[sizeof(UE_RLF_Report_Container_for_extended_bands)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 9; }
-               void clear() {type = 0;}
-               void select_id_FailureCellPCI() { set(mandatory); type=1;}
-               void select_id_Re_establishmentCellECGI() { set(mandatory); type=2;}
-               void select_id_FailureCellCRNTI() { set(mandatory); type=3;}
-               void select_id_ShortMAC_I() { set(optional); type=4;}
-               void select_id_UE_RLF_Report_Container() { set(optional); type=5;}
-               void select_id_RRCConnSetupIndicator() { set(optional); type=6;}
-               void select_id_RRCConnReestabIndicator() { set(optional); type=7;}
-               void select_id_UE_RLF_Report_Container_for_extended_bands() { set(optional); type=8;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else if(equal(optional)) { type = 6; return true; }
-                       else if(equal(optional)) { type = 7; return true; }
-                       else if(equal(optional)) { type = 8; return true; }
-                       else { type = 9; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 9: type = 9; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-RLFIndication ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{RLFIndication-IEs}},
-       ...
-}
-*/
-
-struct RLFIndication : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "RLFIndication";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<RLFIndication_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<RLFIndication_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-RNL-Header-Item-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct RNL_Header_Item_ExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-RNL-Header ::= SEQUENCE {
-       source-GlobalENB-ID     GlobalENB-ID,
-       target-GlobalENB-ID     GlobalENB-ID    OPTIONAL,
-       iE-Extensions                                           ProtocolExtensionContainer { {RNL-Header-Item-ExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct RNL_Header : asn::sequence<3, 0, true, 2>
-{
-       static constexpr const char* name() {return "RNL-Header";}
-       using parent_t = asn::sequence<3, 0, true, 2>;
-       struct source_GlobalENB_ID_t : GlobalENB_ID
-       {
-               static constexpr const char* name() {return "source_GlobalENB_ID_t";}
-               using parent_t = GlobalENB_ID;
-
-       };
-       source_GlobalENB_ID_t& ref_source_GlobalENB_ID() {return source_GlobalENB_ID;}
-       source_GlobalENB_ID_t const& ref_source_GlobalENB_ID() const {return source_GlobalENB_ID;}
-       struct target_GlobalENB_ID_t : GlobalENB_ID
-       {
-               static constexpr const char* name() {return "target_GlobalENB_ID_t";}
-               using parent_t = GlobalENB_ID;
-               static constexpr bool optional = true;
-
-       };
-       target_GlobalENB_ID_t& set_target_GlobalENB_ID() { target_GlobalENB_ID.setpresent(true); return target_GlobalENB_ID;}
-       target_GlobalENB_ID_t const* get_target_GlobalENB_ID() const {return target_GlobalENB_ID.is_valid() ? &target_GlobalENB_ID : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<RNL_Header_Item_ExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<RNL_Header_Item_ExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(source_GlobalENB_ID);
-               v(target_GlobalENB_ID);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(source_GlobalENB_ID);
-               v(target_GlobalENB_ID);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               source_GlobalENB_ID.clear();
-               target_GlobalENB_ID.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       source_GlobalENB_ID_t   source_GlobalENB_ID;
-       target_GlobalENB_ID_t   target_GlobalENB_ID;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-RRCTransfer-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-MeNB-UE-X2AP-ID                                         CRITICALITY reject      TYPE UE-X2AP-ID                                 PRESENCE mandatory}|
-       { ID id-SgNB-UE-X2AP-ID                                         CRITICALITY reject      TYPE SgNB-UE-X2AP-ID                            PRESENCE mandatory}|
-       { ID id-SplitSRB                                                                CRITICALITY reject      TYPE SplitSRB                                   PRESENCE optional}|
-       { ID id-UENRMeasurement                                         CRITICALITY reject      TYPE UENRMeasurement                            PRESENCE optional}|
-       { ID id-MeNB-UE-X2AP-ID-Extension                       CRITICALITY reject      TYPE UE-X2AP-ID-Extension               PRESENCE optional},
-       ...
-}
-*/
-
-struct RRCTransfer_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;}
-               void select_id_SplitSRB() { set(id_SplitSRB); type=3;}
-               void select_id_UENRMeasurement() { set(id_UENRMeasurement); type=4;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=5;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_SplitSRB)) { type = 3; return true; }
-                       else if(equal(id_UENRMeasurement)) { type = 4; return true; }
-                       else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_SplitSRB);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_UENRMeasurement);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(reject); type=2;}
-               void select_id_SplitSRB() { set(reject); type=3;}
-               void select_id_UENRMeasurement() { set(reject); type=4;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=5;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(reject)) { type = 3; return true; }
-                       else if(equal(reject)) { type = 4; return true; }
-                       else if(equal(reject)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set<SgNB_UE_X2AP_ID>(2); }
-               SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get<SgNB_UE_X2AP_ID>(2); }
-               SplitSRB& select_id_SplitSRB() { return set<SplitSRB>(3); }
-               SplitSRB const* get_id_SplitSRB() const { return get<SplitSRB>(3); }
-               UENRMeasurement& select_id_UENRMeasurement() { return set<UENRMeasurement>(4); }
-               UENRMeasurement const* get_id_UENRMeasurement() const { return get<UENRMeasurement>(4); }
-               UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(5); }
-               UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(5); }
-               bool is_unknown() const { return type == 6; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<SgNB_UE_X2AP_ID>(); break;
-                       case 3: var.destroy<SplitSRB>(); break;
-                       case 4: var.destroy<UENRMeasurement>(); break;
-                       case 5: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<SgNB_UE_X2AP_ID>(2);
-                       v.template operator()<SplitSRB>(3);
-                       v.template operator()<UENRMeasurement>(4);
-                       v.template operator()<UE_X2AP_ID_Extension>(5);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_MeNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_SgNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_SplitSRB()); return true;
-                       case 4: v(select_id_UENRMeasurement()); return true;
-                       case 5: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true;
-                       case 6: if(type != 6) {clear(); asn::base::set();} type = 6; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<SgNB_UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<SplitSRB>()); return true;
-                       case 4: v(var.as<UENRMeasurement>()); return true;
-                       case 5: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(SgNB_UE_X2AP_ID)];
-                       char dummy2[sizeof(SplitSRB)];
-                       char dummy3[sizeof(UENRMeasurement)];
-                       char dummy4[sizeof(UE_X2AP_ID)];
-                       char dummy5[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(mandatory); type=2;}
-               void select_id_SplitSRB() { set(optional); type=3;}
-               void select_id_UENRMeasurement() { set(optional); type=4;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=5;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(optional)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-RRCTransfer ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container            {{RRCTransfer-IEs}},
-       ...
-}
-*/
-
-struct RRCTransfer : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "RRCTransfer";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<RRCTransfer_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<RRCTransfer_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-ReportingPeriodicity ::= ENUMERATED {
-       one-thousand-ms,
-       two-thousand-ms,
-       five-thousand-ms,
-       ten-thousand-ms,
-...
-}
-*/
-
-struct ReportingPeriodicity : asn::enumerated<4, 0, true>
-{
-       static constexpr const char* name() {return "ReportingPeriodicity";}
-       using parent_t = asn::enumerated<4, 0, true>;
-       typedef enum {
-               one_thousand_ms
-               ,two_thousand_ms
-               ,five_thousand_ms
-               ,ten_thousand_ms
-       } index_t;
-
-};
-
-/*
-ResetRequest-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-Cause                           CRITICALITY ignore      TYPE Cause                              PRESENCE mandatory},
-       ...
-}
-*/
-
-struct ResetRequest_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_Cause() { set(id_Cause); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_Cause)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_Cause);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_Cause() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               Cause& select_id_Cause() { return set<Cause>(1); }
-               Cause const* get_id_Cause() const { return get<Cause>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<Cause>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<Cause>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_Cause()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<Cause>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(Cause)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_Cause() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ResetRequest ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{ResetRequest-IEs}},
-       ...
-}
-*/
-
-struct ResetRequest : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "ResetRequest";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<ResetRequest_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<ResetRequest_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-ResetResponse-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-CriticalityDiagnostics  CRITICALITY ignore      TYPE CriticalityDiagnostics                     PRESENCE optional },
-       ...
-}
-*/
-
-struct ResetResponse_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_CriticalityDiagnostics)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(1); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<CriticalityDiagnostics>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<CriticalityDiagnostics>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_CriticalityDiagnostics()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<CriticalityDiagnostics>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(CriticalityDiagnostics)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(optional)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ResetResponse ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{ResetResponse-IEs}},
-       ...
-}
-*/
-
-struct ResetResponse : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "ResetResponse";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<ResetResponse_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<ResetResponse_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-ResourceStatusFailure-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-ENB1-Measurement-ID                                             CRITICALITY reject      TYPE Measurement-ID                                                                     PRESENCE mandatory}|
-       { ID id-ENB2-Measurement-ID                                             CRITICALITY reject      TYPE Measurement-ID                                                                     PRESENCE mandatory}|
-       { ID id-Cause                                                                   CRITICALITY ignore      TYPE Cause                                                                                      PRESENCE mandatory}|
-       { ID id-CriticalityDiagnostics                                  CRITICALITY ignore      TYPE CriticalityDiagnostics                                             PRESENCE optional}|
-       { ID id-CompleteFailureCauseInformation-List    CRITICALITY ignore      TYPE CompleteFailureCauseInformation-List       PRESENCE optional},
-       ...
-}
-*/
-
-struct ResourceStatusFailure_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_ENB1_Measurement_ID() { set(id_ENB1_Measurement_ID); type=1;}
-               void select_id_ENB2_Measurement_ID() { set(id_ENB2_Measurement_ID); type=2;}
-               void select_id_Cause() { set(id_Cause); type=3;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=4;}
-               void select_id_CompleteFailureCauseInformation_List() { set(id_CompleteFailureCauseInformation_List); type=5;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_ENB1_Measurement_ID)) { type = 1; return true; }
-                       else if(equal(id_ENB2_Measurement_ID)) { type = 2; return true; }
-                       else if(equal(id_Cause)) { type = 3; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 4; return true; }
-                       else if(equal(id_CompleteFailureCauseInformation_List)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_ENB1_Measurement_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_ENB2_Measurement_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_CompleteFailureCauseInformation_List);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_ENB1_Measurement_ID() { set(reject); type=1;}
-               void select_id_ENB2_Measurement_ID() { set(reject); type=2;}
-               void select_id_Cause() { set(ignore); type=3;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=4;}
-               void select_id_CompleteFailureCauseInformation_List() { set(ignore); type=5;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else if(equal(ignore)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               Measurement_ID& select_id_ENB1_Measurement_ID() { return set<Measurement_ID>(1); }
-               Measurement_ID const* get_id_ENB1_Measurement_ID() const { return get<Measurement_ID>(1); }
-               Measurement_ID& select_id_ENB2_Measurement_ID() { return set<Measurement_ID>(2); }
-               Measurement_ID const* get_id_ENB2_Measurement_ID() const { return get<Measurement_ID>(2); }
-               Cause& select_id_Cause() { return set<Cause>(3); }
-               Cause const* get_id_Cause() const { return get<Cause>(3); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(4); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(4); }
-               CompleteFailureCauseInformation_List& select_id_CompleteFailureCauseInformation_List() { return set<CompleteFailureCauseInformation_List>(5); }
-               CompleteFailureCauseInformation_List const* get_id_CompleteFailureCauseInformation_List() const { return get<CompleteFailureCauseInformation_List>(5); }
-               bool is_unknown() const { return type == 6; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<Measurement_ID>(); break;
-                       case 2: var.destroy<Measurement_ID>(); break;
-                       case 3: var.destroy<Cause>(); break;
-                       case 4: var.destroy<CriticalityDiagnostics>(); break;
-                       case 5: var.destroy<CompleteFailureCauseInformation_List>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<Measurement_ID>(1);
-                       v.template operator()<Measurement_ID>(2);
-                       v.template operator()<Cause>(3);
-                       v.template operator()<CriticalityDiagnostics>(4);
-                       v.template operator()<CompleteFailureCauseInformation_List>(5);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_ENB1_Measurement_ID()); return true;
-                       case 2: v(select_id_ENB2_Measurement_ID()); return true;
-                       case 3: v(select_id_Cause()); return true;
-                       case 4: v(select_id_CriticalityDiagnostics()); return true;
-                       case 5: v(select_id_CompleteFailureCauseInformation_List()); return true;
-                       case 6: if(type != 6) {clear(); asn::base::set();} type = 6; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<Measurement_ID>()); return true;
-                       case 2: v(var.as<Measurement_ID>()); return true;
-                       case 3: v(var.as<Cause>()); return true;
-                       case 4: v(var.as<CriticalityDiagnostics>()); return true;
-                       case 5: v(var.as<CompleteFailureCauseInformation_List>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(Cause)];
-                       char dummy2[sizeof(CompleteFailureCauseInformation_List)];
-                       char dummy3[sizeof(CriticalityDiagnostics)];
-                       char dummy4[sizeof(Measurement_ID)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_ENB1_Measurement_ID() { set(mandatory); type=1;}
-               void select_id_ENB2_Measurement_ID() { set(mandatory); type=2;}
-               void select_id_Cause() { set(mandatory); type=3;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=4;}
-               void select_id_CompleteFailureCauseInformation_List() { set(optional); type=5;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ResourceStatusFailure ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{ResourceStatusFailure-IEs}},
-       ...
-}
-*/
-
-struct ResourceStatusFailure : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "ResourceStatusFailure";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<ResourceStatusFailure_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<ResourceStatusFailure_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-ResourceStatusRequest-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-ENB1-Measurement-ID                     CRITICALITY reject      TYPE Measurement-ID                                     PRESENCE mandatory}|
-       { ID id-ENB2-Measurement-ID                     CRITICALITY ignore      TYPE Measurement-ID                                     PRESENCE conditional}|-- The IE shall be present if the Registration Request IE is set to “Stop”, “Partial stop” or to “Add”--
-       { ID id-Registration-Request            CRITICALITY reject      TYPE Registration-Request                       PRESENCE mandatory}|
-       { ID id-ReportCharacteristics           CRITICALITY reject      TYPE ReportCharacteristics                      PRESENCE optional}|
-       { ID id-CellToReport                            CRITICALITY ignore      TYPE CellToReport-List                          PRESENCE mandatory}|
-       { ID id-ReportingPeriodicity            CRITICALITY ignore      TYPE ReportingPeriodicity                       PRESENCE optional}|
-       { ID id-PartialSuccessIndicator         CRITICALITY ignore      TYPE PartialSuccessIndicator            PRESENCE optional}|
-       { ID id-ReportingPeriodicityRSRPMR      CRITICALITY ignore      TYPE ReportingPeriodicityRSRPMR         PRESENCE optional}|
-       { ID id-ReportingPeriodicityCSIR        CRITICALITY ignore      TYPE ReportingPeriodicityCSIR           PRESENCE optional},
-       ...
-}
-*/
-
-struct ResourceStatusRequest_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 10; }
-               void clear() {type = 0;}
-               void select_id_ENB1_Measurement_ID() { set(id_ENB1_Measurement_ID); type=1;}
-               void select_id_ENB2_Measurement_ID() { set(id_ENB2_Measurement_ID); type=2;}
-               void select_id_Registration_Request() { set(id_Registration_Request); type=3;}
-               void select_id_ReportCharacteristics() { set(id_ReportCharacteristics); type=4;}
-               void select_id_CellToReport() { set(id_CellToReport); type=5;}
-               void select_id_ReportingPeriodicity() { set(id_ReportingPeriodicity); type=6;}
-               void select_id_PartialSuccessIndicator() { set(id_PartialSuccessIndicator); type=7;}
-               void select_id_ReportingPeriodicityRSRPMR() { set(id_ReportingPeriodicityRSRPMR); type=8;}
-               void select_id_ReportingPeriodicityCSIR() { set(id_ReportingPeriodicityCSIR); type=9;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_ENB1_Measurement_ID)) { type = 1; return true; }
-                       else if(equal(id_ENB2_Measurement_ID)) { type = 2; return true; }
-                       else if(equal(id_Registration_Request)) { type = 3; return true; }
-                       else if(equal(id_ReportCharacteristics)) { type = 4; return true; }
-                       else if(equal(id_CellToReport)) { type = 5; return true; }
-                       else if(equal(id_ReportingPeriodicity)) { type = 6; return true; }
-                       else if(equal(id_PartialSuccessIndicator)) { type = 7; return true; }
-                       else if(equal(id_ReportingPeriodicityRSRPMR)) { type = 8; return true; }
-                       else if(equal(id_ReportingPeriodicityCSIR)) { type = 9; return true; }
-                       else { type = 10; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_ENB1_Measurement_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_ENB2_Measurement_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_Registration_Request);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_ReportCharacteristics);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_CellToReport);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(id_ReportingPeriodicity);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(id_PartialSuccessIndicator);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(id_ReportingPeriodicityRSRPMR);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(id_ReportingPeriodicityCSIR);} return false;
-                       case 10: type = 10; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 10; }
-               void clear() {type = 0;}
-               void select_id_ENB1_Measurement_ID() { set(reject); type=1;}
-               void select_id_ENB2_Measurement_ID() { set(ignore); type=2;}
-               void select_id_Registration_Request() { set(reject); type=3;}
-               void select_id_ReportCharacteristics() { set(reject); type=4;}
-               void select_id_CellToReport() { set(ignore); type=5;}
-               void select_id_ReportingPeriodicity() { set(ignore); type=6;}
-               void select_id_PartialSuccessIndicator() { set(ignore); type=7;}
-               void select_id_ReportingPeriodicityRSRPMR() { set(ignore); type=8;}
-               void select_id_ReportingPeriodicityCSIR() { set(ignore); type=9;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(reject)) { type = 3; return true; }
-                       else if(equal(reject)) { type = 4; return true; }
-                       else if(equal(ignore)) { type = 5; return true; }
-                       else if(equal(ignore)) { type = 6; return true; }
-                       else if(equal(ignore)) { type = 7; return true; }
-                       else if(equal(ignore)) { type = 8; return true; }
-                       else if(equal(ignore)) { type = 9; return true; }
-                       else { type = 10; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 10: type = 10; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               Measurement_ID& select_id_ENB1_Measurement_ID() { return set<Measurement_ID>(1); }
-               Measurement_ID const* get_id_ENB1_Measurement_ID() const { return get<Measurement_ID>(1); }
-               Measurement_ID& select_id_ENB2_Measurement_ID() { return set<Measurement_ID>(2); }
-               Measurement_ID const* get_id_ENB2_Measurement_ID() const { return get<Measurement_ID>(2); }
-               Registration_Request& select_id_Registration_Request() { return set<Registration_Request>(3); }
-               Registration_Request const* get_id_Registration_Request() const { return get<Registration_Request>(3); }
-               ReportCharacteristics& select_id_ReportCharacteristics() { return set<ReportCharacteristics>(4); }
-               ReportCharacteristics const* get_id_ReportCharacteristics() const { return get<ReportCharacteristics>(4); }
-               CellToReport_List& select_id_CellToReport() { return set<CellToReport_List>(5); }
-               CellToReport_List const* get_id_CellToReport() const { return get<CellToReport_List>(5); }
-               ReportingPeriodicity& select_id_ReportingPeriodicity() { return set<ReportingPeriodicity>(6); }
-               ReportingPeriodicity const* get_id_ReportingPeriodicity() const { return get<ReportingPeriodicity>(6); }
-               PartialSuccessIndicator& select_id_PartialSuccessIndicator() { return set<PartialSuccessIndicator>(7); }
-               PartialSuccessIndicator const* get_id_PartialSuccessIndicator() const { return get<PartialSuccessIndicator>(7); }
-               ReportingPeriodicityRSRPMR& select_id_ReportingPeriodicityRSRPMR() { return set<ReportingPeriodicityRSRPMR>(8); }
-               ReportingPeriodicityRSRPMR const* get_id_ReportingPeriodicityRSRPMR() const { return get<ReportingPeriodicityRSRPMR>(8); }
-               ReportingPeriodicityCSIR& select_id_ReportingPeriodicityCSIR() { return set<ReportingPeriodicityCSIR>(9); }
-               ReportingPeriodicityCSIR const* get_id_ReportingPeriodicityCSIR() const { return get<ReportingPeriodicityCSIR>(9); }
-               bool is_unknown() const { return type == 10; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<Measurement_ID>(); break;
-                       case 2: var.destroy<Measurement_ID>(); break;
-                       case 3: var.destroy<Registration_Request>(); break;
-                       case 4: var.destroy<ReportCharacteristics>(); break;
-                       case 5: var.destroy<CellToReport_List>(); break;
-                       case 6: var.destroy<ReportingPeriodicity>(); break;
-                       case 7: var.destroy<PartialSuccessIndicator>(); break;
-                       case 8: var.destroy<ReportingPeriodicityRSRPMR>(); break;
-                       case 9: var.destroy<ReportingPeriodicityCSIR>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<Measurement_ID>(1);
-                       v.template operator()<Measurement_ID>(2);
-                       v.template operator()<Registration_Request>(3);
-                       v.template operator()<ReportCharacteristics>(4);
-                       v.template operator()<CellToReport_List>(5);
-                       v.template operator()<ReportingPeriodicity>(6);
-                       v.template operator()<PartialSuccessIndicator>(7);
-                       v.template operator()<ReportingPeriodicityRSRPMR>(8);
-                       v.template operator()<ReportingPeriodicityCSIR>(9);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_ENB1_Measurement_ID()); return true;
-                       case 2: v(select_id_ENB2_Measurement_ID()); return true;
-                       case 3: v(select_id_Registration_Request()); return true;
-                       case 4: v(select_id_ReportCharacteristics()); return true;
-                       case 5: v(select_id_CellToReport()); return true;
-                       case 6: v(select_id_ReportingPeriodicity()); return true;
-                       case 7: v(select_id_PartialSuccessIndicator()); return true;
-                       case 8: v(select_id_ReportingPeriodicityRSRPMR()); return true;
-                       case 9: v(select_id_ReportingPeriodicityCSIR()); return true;
-                       case 10: if(type != 10) {clear(); asn::base::set();} type = 10; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<Measurement_ID>()); return true;
-                       case 2: v(var.as<Measurement_ID>()); return true;
-                       case 3: v(var.as<Registration_Request>()); return true;
-                       case 4: v(var.as<ReportCharacteristics>()); return true;
-                       case 5: v(var.as<CellToReport_List>()); return true;
-                       case 6: v(var.as<ReportingPeriodicity>()); return true;
-                       case 7: v(var.as<PartialSuccessIndicator>()); return true;
-                       case 8: v(var.as<ReportingPeriodicityRSRPMR>()); return true;
-                       case 9: v(var.as<ReportingPeriodicityCSIR>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(CellToReport_List)];
-                       char dummy2[sizeof(Measurement_ID)];
-                       char dummy3[sizeof(PartialSuccessIndicator)];
-                       char dummy4[sizeof(Registration_Request)];
-                       char dummy5[sizeof(ReportCharacteristics)];
-                       char dummy6[sizeof(ReportingPeriodicity)];
-                       char dummy7[sizeof(ReportingPeriodicityCSIR)];
-                       char dummy8[sizeof(ReportingPeriodicityRSRPMR)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 10; }
-               void clear() {type = 0;}
-               void select_id_ENB1_Measurement_ID() { set(mandatory); type=1;}
-               void select_id_ENB2_Measurement_ID() { set(conditional); type=2;}
-               void select_id_Registration_Request() { set(mandatory); type=3;}
-               void select_id_ReportCharacteristics() { set(optional); type=4;}
-               void select_id_CellToReport() { set(mandatory); type=5;}
-               void select_id_ReportingPeriodicity() { set(optional); type=6;}
-               void select_id_PartialSuccessIndicator() { set(optional); type=7;}
-               void select_id_ReportingPeriodicityRSRPMR() { set(optional); type=8;}
-               void select_id_ReportingPeriodicityCSIR() { set(optional); type=9;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(conditional)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(mandatory)) { type = 5; return true; }
-                       else if(equal(optional)) { type = 6; return true; }
-                       else if(equal(optional)) { type = 7; return true; }
-                       else if(equal(optional)) { type = 8; return true; }
-                       else if(equal(optional)) { type = 9; return true; }
-                       else { type = 10; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(conditional);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 10: type = 10; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ResourceStatusRequest ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{ResourceStatusRequest-IEs}},
-       ...
-}
-*/
-
-struct ResourceStatusRequest : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "ResourceStatusRequest";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<ResourceStatusRequest_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<ResourceStatusRequest_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-ResourceStatusResponse-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-ENB1-Measurement-ID                                     CRITICALITY reject      TYPE Measurement-ID                                                     PRESENCE mandatory}|
-       { ID id-ENB2-Measurement-ID                                     CRITICALITY reject      TYPE Measurement-ID                                                     PRESENCE mandatory}|
-       { ID id-CriticalityDiagnostics                          CRITICALITY ignore      TYPE CriticalityDiagnostics                                     PRESENCE optional}|
-       { ID id-MeasurementInitiationResult-List        CRITICALITY ignore      TYPE MeasurementInitiationResult-List   PRESENCE optional},
-       ...
-}
-*/
-
-struct ResourceStatusResponse_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 5; }
-               void clear() {type = 0;}
-               void select_id_ENB1_Measurement_ID() { set(id_ENB1_Measurement_ID); type=1;}
-               void select_id_ENB2_Measurement_ID() { set(id_ENB2_Measurement_ID); type=2;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=3;}
-               void select_id_MeasurementInitiationResult_List() { set(id_MeasurementInitiationResult_List); type=4;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_ENB1_Measurement_ID)) { type = 1; return true; }
-                       else if(equal(id_ENB2_Measurement_ID)) { type = 2; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 3; return true; }
-                       else if(equal(id_MeasurementInitiationResult_List)) { type = 4; return true; }
-                       else { type = 5; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_ENB1_Measurement_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_ENB2_Measurement_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_MeasurementInitiationResult_List);} return false;
-                       case 5: type = 5; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 5; }
-               void clear() {type = 0;}
-               void select_id_ENB1_Measurement_ID() { set(reject); type=1;}
-               void select_id_ENB2_Measurement_ID() { set(reject); type=2;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=3;}
-               void select_id_MeasurementInitiationResult_List() { set(ignore); type=4;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else { type = 5; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               Measurement_ID& select_id_ENB1_Measurement_ID() { return set<Measurement_ID>(1); }
-               Measurement_ID const* get_id_ENB1_Measurement_ID() const { return get<Measurement_ID>(1); }
-               Measurement_ID& select_id_ENB2_Measurement_ID() { return set<Measurement_ID>(2); }
-               Measurement_ID const* get_id_ENB2_Measurement_ID() const { return get<Measurement_ID>(2); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(3); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(3); }
-               MeasurementInitiationResult_List& select_id_MeasurementInitiationResult_List() { return set<MeasurementInitiationResult_List>(4); }
-               MeasurementInitiationResult_List const* get_id_MeasurementInitiationResult_List() const { return get<MeasurementInitiationResult_List>(4); }
-               bool is_unknown() const { return type == 5; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<Measurement_ID>(); break;
-                       case 2: var.destroy<Measurement_ID>(); break;
-                       case 3: var.destroy<CriticalityDiagnostics>(); break;
-                       case 4: var.destroy<MeasurementInitiationResult_List>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<Measurement_ID>(1);
-                       v.template operator()<Measurement_ID>(2);
-                       v.template operator()<CriticalityDiagnostics>(3);
-                       v.template operator()<MeasurementInitiationResult_List>(4);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_ENB1_Measurement_ID()); return true;
-                       case 2: v(select_id_ENB2_Measurement_ID()); return true;
-                       case 3: v(select_id_CriticalityDiagnostics()); return true;
-                       case 4: v(select_id_MeasurementInitiationResult_List()); return true;
-                       case 5: if(type != 5) {clear(); asn::base::set();} type = 5; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<Measurement_ID>()); return true;
-                       case 2: v(var.as<Measurement_ID>()); return true;
-                       case 3: v(var.as<CriticalityDiagnostics>()); return true;
-                       case 4: v(var.as<MeasurementInitiationResult_List>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(CriticalityDiagnostics)];
-                       char dummy2[sizeof(MeasurementInitiationResult_List)];
-                       char dummy3[sizeof(Measurement_ID)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 5; }
-               void clear() {type = 0;}
-               void select_id_ENB1_Measurement_ID() { set(mandatory); type=1;}
-               void select_id_ENB2_Measurement_ID() { set(mandatory); type=2;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=3;}
-               void select_id_MeasurementInitiationResult_List() { set(optional); type=4;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(optional)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else { type = 5; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ResourceStatusResponse ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{ResourceStatusResponse-IEs}},
-       ...
-}
-*/
-
-struct ResourceStatusResponse : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "ResourceStatusResponse";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<ResourceStatusResponse_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<ResourceStatusResponse_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-ResourceStatusUpdate-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-ENB1-Measurement-ID             CRITICALITY reject      TYPE Measurement-ID                                     PRESENCE mandatory}|
-       { ID id-ENB2-Measurement-ID             CRITICALITY reject      TYPE Measurement-ID                                     PRESENCE mandatory}|
-       { ID id-CellMeasurementResult   CRITICALITY ignore      TYPE CellMeasurementResult-List         PRESENCE mandatory},
-       ...
-}
-*/
-
-struct ResourceStatusUpdate_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_ENB1_Measurement_ID() { set(id_ENB1_Measurement_ID); type=1;}
-               void select_id_ENB2_Measurement_ID() { set(id_ENB2_Measurement_ID); type=2;}
-               void select_id_CellMeasurementResult() { set(id_CellMeasurementResult); type=3;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_ENB1_Measurement_ID)) { type = 1; return true; }
-                       else if(equal(id_ENB2_Measurement_ID)) { type = 2; return true; }
-                       else if(equal(id_CellMeasurementResult)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_ENB1_Measurement_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_ENB2_Measurement_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_CellMeasurementResult);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_ENB1_Measurement_ID() { set(reject); type=1;}
-               void select_id_ENB2_Measurement_ID() { set(reject); type=2;}
-               void select_id_CellMeasurementResult() { set(ignore); type=3;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               Measurement_ID& select_id_ENB1_Measurement_ID() { return set<Measurement_ID>(1); }
-               Measurement_ID const* get_id_ENB1_Measurement_ID() const { return get<Measurement_ID>(1); }
-               Measurement_ID& select_id_ENB2_Measurement_ID() { return set<Measurement_ID>(2); }
-               Measurement_ID const* get_id_ENB2_Measurement_ID() const { return get<Measurement_ID>(2); }
-               CellMeasurementResult_List& select_id_CellMeasurementResult() { return set<CellMeasurementResult_List>(3); }
-               CellMeasurementResult_List const* get_id_CellMeasurementResult() const { return get<CellMeasurementResult_List>(3); }
-               bool is_unknown() const { return type == 4; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<Measurement_ID>(); break;
-                       case 2: var.destroy<Measurement_ID>(); break;
-                       case 3: var.destroy<CellMeasurementResult_List>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<Measurement_ID>(1);
-                       v.template operator()<Measurement_ID>(2);
-                       v.template operator()<CellMeasurementResult_List>(3);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_ENB1_Measurement_ID()); return true;
-                       case 2: v(select_id_ENB2_Measurement_ID()); return true;
-                       case 3: v(select_id_CellMeasurementResult()); return true;
-                       case 4: if(type != 4) {clear(); asn::base::set();} type = 4; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<Measurement_ID>()); return true;
-                       case 2: v(var.as<Measurement_ID>()); return true;
-                       case 3: v(var.as<CellMeasurementResult_List>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(CellMeasurementResult_List)];
-                       char dummy2[sizeof(Measurement_ID)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_ENB1_Measurement_ID() { set(mandatory); type=1;}
-               void select_id_ENB2_Measurement_ID() { set(mandatory); type=2;}
-               void select_id_CellMeasurementResult() { set(mandatory); type=3;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ResourceStatusUpdate ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{ResourceStatusUpdate-IEs}},
-       ...
-}
-*/
-
-struct ResourceStatusUpdate : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "ResourceStatusUpdate";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<ResourceStatusUpdate_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<ResourceStatusUpdate_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-ResponseInformationSeNBReconfComp-SuccessItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct ResponseInformationSeNBReconfComp_SuccessItemExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ResponseInformationSeNBReconfComp-SuccessItem ::= SEQUENCE {
-       meNBtoSeNBContainer                             MeNBtoSeNBContainer OPTIONAL,
-       iE-Extensions                                   ProtocolExtensionContainer { {ResponseInformationSeNBReconfComp-SuccessItemExtIEs} }    OPTIONAL,
-       ...
-}
-*/
-
-struct ResponseInformationSeNBReconfComp_SuccessItem : asn::sequence<2, 0, true, 2>
-{
-       static constexpr const char* name() {return "ResponseInformationSeNBReconfComp-SuccessItem";}
-       using parent_t = asn::sequence<2, 0, true, 2>;
-       struct meNBtoSeNBContainer_t : MeNBtoSeNBContainer
-       {
-               static constexpr const char* name() {return "meNBtoSeNBContainer_t";}
-               using parent_t = MeNBtoSeNBContainer;
-               static constexpr bool optional = true;
-
-       };
-       meNBtoSeNBContainer_t& set_meNBtoSeNBContainer() { meNBtoSeNBContainer.setpresent(true); return meNBtoSeNBContainer;}
-       meNBtoSeNBContainer_t const* get_meNBtoSeNBContainer() const {return meNBtoSeNBContainer.is_valid() ? &meNBtoSeNBContainer : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<ResponseInformationSeNBReconfComp_SuccessItemExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<ResponseInformationSeNBReconfComp_SuccessItemExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(meNBtoSeNBContainer);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(meNBtoSeNBContainer);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               meNBtoSeNBContainer.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       meNBtoSeNBContainer_t   meNBtoSeNBContainer;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-ResponseInformationSeNBReconfComp-RejectByMeNBItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ResponseInformationSeNBReconfComp-RejectByMeNBItem ::= SEQUENCE {
-       cause                                                   Cause,
-       meNBtoSeNBContainer                             MeNBtoSeNBContainer                                                                                                                                                                             OPTIONAL,
-       iE-Extensions                                   ProtocolExtensionContainer { {ResponseInformationSeNBReconfComp-RejectByMeNBItemExtIEs} }       OPTIONAL,
-       ...
-}
-*/
-
-struct ResponseInformationSeNBReconfComp_RejectByMeNBItem : asn::sequence<3, 0, true, 2>
-{
-       static constexpr const char* name() {return "ResponseInformationSeNBReconfComp-RejectByMeNBItem";}
-       using parent_t = asn::sequence<3, 0, true, 2>;
-       struct cause_t : Cause
-       {
-               static constexpr const char* name() {return "cause_t";}
-               using parent_t = Cause;
-
-       };
-       cause_t& ref_cause() {return cause;}
-       cause_t const& ref_cause() const {return cause;}
-       struct meNBtoSeNBContainer_t : MeNBtoSeNBContainer
-       {
-               static constexpr const char* name() {return "meNBtoSeNBContainer_t";}
-               using parent_t = MeNBtoSeNBContainer;
-               static constexpr bool optional = true;
-
-       };
-       meNBtoSeNBContainer_t& set_meNBtoSeNBContainer() { meNBtoSeNBContainer.setpresent(true); return meNBtoSeNBContainer;}
-       meNBtoSeNBContainer_t const* get_meNBtoSeNBContainer() const {return meNBtoSeNBContainer.is_valid() ? &meNBtoSeNBContainer : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(cause);
-               v(meNBtoSeNBContainer);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(cause);
-               v(meNBtoSeNBContainer);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               cause.clear();
-               meNBtoSeNBContainer.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       cause_t cause;
-       meNBtoSeNBContainer_t   meNBtoSeNBContainer;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-ResponseInformationSeNBReconfComp ::= CHOICE {
-       success                         ResponseInformationSeNBReconfComp-SuccessItem,
-       reject-by-MeNB          ResponseInformationSeNBReconfComp-RejectByMeNBItem,
-       ...
-}
-*/
-
-struct ResponseInformationSeNBReconfComp : asn::choice<2, 0, true>
-{
-       static constexpr const char* name() {return "ResponseInformationSeNBReconfComp";}
-       using parent_t = asn::choice<2, 0, true>;
-       index_type get_index() const {return index;}
-       bool is_unknown() const {return index == 3;}
-       void set_unknown() { set_index(3);  }
-       ~ResponseInformationSeNBReconfComp() {clear();}
-       struct success_t : ResponseInformationSeNBReconfComp_SuccessItem
-       {
-               static constexpr const char* name() {return "success_t";}
-               using parent_t = ResponseInformationSeNBReconfComp_SuccessItem;
-
-       };
-       struct reject_by_MeNB_t : ResponseInformationSeNBReconfComp_RejectByMeNBItem
-       {
-               static constexpr const char* name() {return "reject_by_MeNB_t";}
-               using parent_t = ResponseInformationSeNBReconfComp_RejectByMeNBItem;
-
-       };
-       void clear()
-       {
-               switch(get_index())
-               {
-               case 1: var.destroy<success_t>(); break;
-               case 2: var.destroy<reject_by_MeNB_t>(); break;
-               }
-               index = 0;
-               base::clear();
-       }
-       template<typename V> bool decode(size_t idx, V& v)
-       {
-               clear();
-               switch(idx)
-               {
-               case 1: set_index(1); return v(var.build<success_t>());
-               case 2: set_index(2); return v(var.build<reject_by_MeNB_t>());
-               }
-               return false;
-
-       }
-       template<typename V> bool encode(V& v) const
-       {
-               switch(get_index())
-               {
-               case 1: return v(var.as<success_t>());
-               case 2: return v(var.as<reject_by_MeNB_t>());
-               }
-               return false;
-       }
-       template<typename V> static inline void enumerate(V& v)
-       {
-               v.template operator()<success_t>(1);
-               v.template operator()<reject_by_MeNB_t>(2);
-
-       }
-       success_t& select_success() { if(get_index() != 1) { clear(); set_index(1); return var.build<success_t>();} return var.as<success_t>();}
-       success_t const* get_success() const { if(get_index() == 1) { return &var.as<success_t>();} return nullptr; }
-       reject_by_MeNB_t& select_reject_by_MeNB() { if(get_index() != 2) { clear(); set_index(2); return var.build<reject_by_MeNB_t>();} return var.as<reject_by_MeNB_t>();}
-       reject_by_MeNB_t const* get_reject_by_MeNB() const { if(get_index() == 2) { return &var.as<reject_by_MeNB_t>();} return nullptr; }
-       private:
-       void set_index(index_type i) {index = i; base::set();}
-       union union_type
-       {
-               char dummy1[sizeof(success_t)];
-               char dummy2[sizeof(reject_by_MeNB_t)];
-
-       };
-       asn::variant<sizeof(union_type)>        var;
-       index_type      index {0};
-};
-/*
-ResponseInformationSgNBReconfComp-SuccessItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct ResponseInformationSgNBReconfComp_SuccessItemExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ResponseInformationSgNBReconfComp-SuccessItem ::= SEQUENCE {
-       meNBtoSgNBContainer                             MeNBtoSgNBContainer                                     OPTIONAL,
-       iE-Extensions                                   ProtocolExtensionContainer { {ResponseInformationSgNBReconfComp-SuccessItemExtIEs} }    OPTIONAL,
-       ...
-}
-*/
-
-struct ResponseInformationSgNBReconfComp_SuccessItem : asn::sequence<2, 0, true, 2>
-{
-       static constexpr const char* name() {return "ResponseInformationSgNBReconfComp-SuccessItem";}
-       using parent_t = asn::sequence<2, 0, true, 2>;
-       struct meNBtoSgNBContainer_t : MeNBtoSgNBContainer
-       {
-               static constexpr const char* name() {return "meNBtoSgNBContainer_t";}
-               using parent_t = MeNBtoSgNBContainer;
-               static constexpr bool optional = true;
-
-       };
-       meNBtoSgNBContainer_t& set_meNBtoSgNBContainer() { meNBtoSgNBContainer.setpresent(true); return meNBtoSgNBContainer;}
-       meNBtoSgNBContainer_t const* get_meNBtoSgNBContainer() const {return meNBtoSgNBContainer.is_valid() ? &meNBtoSgNBContainer : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<ResponseInformationSgNBReconfComp_SuccessItemExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<ResponseInformationSgNBReconfComp_SuccessItemExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(meNBtoSgNBContainer);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(meNBtoSgNBContainer);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               meNBtoSgNBContainer.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       meNBtoSgNBContainer_t   meNBtoSgNBContainer;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-ResponseInformationSgNBReconfComp-RejectByMeNBItemExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-ResponseInformationSgNBReconfComp-RejectByMeNBItem ::= SEQUENCE {
-       cause                                                   Cause,
-       iE-Extensions                                   ProtocolExtensionContainer { {ResponseInformationSgNBReconfComp-RejectByMeNBItemExtIEs} }               OPTIONAL,
-       ...
-}
-*/
-
-struct ResponseInformationSgNBReconfComp_RejectByMeNBItem : asn::sequence<2, 0, true, 1>
-{
-       static constexpr const char* name() {return "ResponseInformationSgNBReconfComp-RejectByMeNBItem";}
-       using parent_t = asn::sequence<2, 0, true, 1>;
-       struct cause_t : Cause
-       {
-               static constexpr const char* name() {return "cause_t";}
-               using parent_t = Cause;
-
-       };
-       cause_t& ref_cause() {return cause;}
-       cause_t const& ref_cause() const {return cause;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<ResponseInformationSgNBReconfComp_RejectByMeNBItemExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(cause);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(cause);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               cause.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       cause_t cause;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-ResponseInformationSgNBReconfComp ::= CHOICE {
-       success-SgNBReconfComp                          ResponseInformationSgNBReconfComp-SuccessItem,
-       reject-by-MeNB-SgNBReconfComp           ResponseInformationSgNBReconfComp-RejectByMeNBItem,
-       ...
-}
-*/
-
-struct ResponseInformationSgNBReconfComp : asn::choice<2, 0, true>
-{
-       static constexpr const char* name() {return "ResponseInformationSgNBReconfComp";}
-       using parent_t = asn::choice<2, 0, true>;
-       index_type get_index() const {return index;}
-       bool is_unknown() const {return index == 3;}
-       void set_unknown() { set_index(3);  }
-       ~ResponseInformationSgNBReconfComp() {clear();}
-       struct success_SgNBReconfComp_t : ResponseInformationSgNBReconfComp_SuccessItem
-       {
-               static constexpr const char* name() {return "success_SgNBReconfComp_t";}
-               using parent_t = ResponseInformationSgNBReconfComp_SuccessItem;
-
-       };
-       struct reject_by_MeNB_SgNBReconfComp_t : ResponseInformationSgNBReconfComp_RejectByMeNBItem
-       {
-               static constexpr const char* name() {return "reject_by_MeNB_SgNBReconfComp_t";}
-               using parent_t = ResponseInformationSgNBReconfComp_RejectByMeNBItem;
-
-       };
-       void clear()
-       {
-               switch(get_index())
-               {
-               case 1: var.destroy<success_SgNBReconfComp_t>(); break;
-               case 2: var.destroy<reject_by_MeNB_SgNBReconfComp_t>(); break;
-               }
-               index = 0;
-               base::clear();
-       }
-       template<typename V> bool decode(size_t idx, V& v)
-       {
-               clear();
-               switch(idx)
-               {
-               case 1: set_index(1); return v(var.build<success_SgNBReconfComp_t>());
-               case 2: set_index(2); return v(var.build<reject_by_MeNB_SgNBReconfComp_t>());
-               }
-               return false;
-
-       }
-       template<typename V> bool encode(V& v) const
-       {
-               switch(get_index())
-               {
-               case 1: return v(var.as<success_SgNBReconfComp_t>());
-               case 2: return v(var.as<reject_by_MeNB_SgNBReconfComp_t>());
-               }
-               return false;
-       }
-       template<typename V> static inline void enumerate(V& v)
-       {
-               v.template operator()<success_SgNBReconfComp_t>(1);
-               v.template operator()<reject_by_MeNB_SgNBReconfComp_t>(2);
-
-       }
-       success_SgNBReconfComp_t& select_success_SgNBReconfComp() { if(get_index() != 1) { clear(); set_index(1); return var.build<success_SgNBReconfComp_t>();} return var.as<success_SgNBReconfComp_t>();}
-       success_SgNBReconfComp_t const* get_success_SgNBReconfComp() const { if(get_index() == 1) { return &var.as<success_SgNBReconfComp_t>();} return nullptr; }
-       reject_by_MeNB_SgNBReconfComp_t& select_reject_by_MeNB_SgNBReconfComp() { if(get_index() != 2) { clear(); set_index(2); return var.build<reject_by_MeNB_SgNBReconfComp_t>();} return var.as<reject_by_MeNB_SgNBReconfComp_t>();}
-       reject_by_MeNB_SgNBReconfComp_t const* get_reject_by_MeNB_SgNBReconfComp() const { if(get_index() == 2) { return &var.as<reject_by_MeNB_SgNBReconfComp_t>();} return nullptr; }
-       private:
-       void set_index(index_type i) {index = i; base::set();}
-       union union_type
-       {
-               char dummy1[sizeof(success_SgNBReconfComp_t)];
-               char dummy2[sizeof(reject_by_MeNB_SgNBReconfComp_t)];
-
-       };
-       asn::variant<sizeof(union_type)>        var;
-       index_type      index {0};
-};
-/*
-RetrieveUEContextFailure-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-New-eNB-UE-X2AP-ID                              CRITICALITY ignore      TYPE UE-X2AP-ID                                 PRESENCE mandatory}|
-       { ID id-New-eNB-UE-X2AP-ID-Extension    CRITICALITY ignore      TYPE UE-X2AP-ID-Extension               PRESENCE optional}|
-       { ID id-Cause                                                   CRITICALITY ignore      TYPE Cause                                              PRESENCE mandatory}|
-       { ID id-CriticalityDiagnostics                  CRITICALITY ignore      TYPE CriticalityDiagnostics             PRESENCE optional},
-       ...
-}
-*/
-
-struct RetrieveUEContextFailure_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 5; }
-               void clear() {type = 0;}
-               void select_id_New_eNB_UE_X2AP_ID() { set(id_New_eNB_UE_X2AP_ID); type=1;}
-               void select_id_New_eNB_UE_X2AP_ID_Extension() { set(id_New_eNB_UE_X2AP_ID_Extension); type=2;}
-               void select_id_Cause() { set(id_Cause); type=3;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=4;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_New_eNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_New_eNB_UE_X2AP_ID_Extension)) { type = 2; return true; }
-                       else if(equal(id_Cause)) { type = 3; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 4; return true; }
-                       else { type = 5; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_New_eNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_New_eNB_UE_X2AP_ID_Extension);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 5: type = 5; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 5; }
-               void clear() {type = 0;}
-               void select_id_New_eNB_UE_X2AP_ID() { set(ignore); type=1;}
-               void select_id_New_eNB_UE_X2AP_ID_Extension() { set(ignore); type=2;}
-               void select_id_Cause() { set(ignore); type=3;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=4;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else { type = 5; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_New_eNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_New_eNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               UE_X2AP_ID_Extension& select_id_New_eNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(2); }
-               UE_X2AP_ID_Extension const* get_id_New_eNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(2); }
-               Cause& select_id_Cause() { return set<Cause>(3); }
-               Cause const* get_id_Cause() const { return get<Cause>(3); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(4); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(4); }
-               bool is_unknown() const { return type == 5; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 3: var.destroy<Cause>(); break;
-                       case 4: var.destroy<CriticalityDiagnostics>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<UE_X2AP_ID_Extension>(2);
-                       v.template operator()<Cause>(3);
-                       v.template operator()<CriticalityDiagnostics>(4);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_New_eNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_New_eNB_UE_X2AP_ID_Extension()); return true;
-                       case 3: v(select_id_Cause()); return true;
-                       case 4: v(select_id_CriticalityDiagnostics()); return true;
-                       case 5: if(type != 5) {clear(); asn::base::set();} type = 5; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 3: v(var.as<Cause>()); return true;
-                       case 4: v(var.as<CriticalityDiagnostics>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(Cause)];
-                       char dummy2[sizeof(CriticalityDiagnostics)];
-                       char dummy3[sizeof(UE_X2AP_ID)];
-                       char dummy4[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 5; }
-               void clear() {type = 0;}
-               void select_id_New_eNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_New_eNB_UE_X2AP_ID_Extension() { set(optional); type=2;}
-               void select_id_Cause() { set(mandatory); type=3;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=4;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else { type = 5; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-RetrieveUEContextFailure ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{ RetrieveUEContextFailure-IEs}},
-       ...
-}
-*/
-
-struct RetrieveUEContextFailure : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "RetrieveUEContextFailure";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<RetrieveUEContextFailure_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<RetrieveUEContextFailure_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-RetrieveUEContextRequest-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-New-eNB-UE-X2AP-ID                                      CRITICALITY reject      TYPE UE-X2AP-ID                         PRESENCE mandatory}|
-       { ID id-SeNB-UE-X2AP-ID-Extension                       CRITICALITY reject      TYPE UE-X2AP-ID-Extension       PRESENCE optional}|
-       { ID id-resumeID                                                        CRITICALITY reject      TYPE ResumeID                           PRESENCE mandatory}|
-       { ID id-ShortMAC-I                                                      CRITICALITY reject      TYPE ShortMAC-I                         PRESENCE mandatory}|
-       { ID id-NewEUTRANCellIdentifier                         CRITICALITY reject      TYPE EUTRANCellIdentifier       PRESENCE mandatory}|
-       {ID id-FailureCellCRNTI                                         CRITICALITY reject      TYPE CRNTI                                      PRESENCE optional}|
-       {ID id-FailureCellPCI                                           CRITICALITY reject      TYPE PCI                                        PRESENCE optional},
-       ...
-}
-*/
-
-struct RetrieveUEContextRequest_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 8; }
-               void clear() {type = 0;}
-               void select_id_New_eNB_UE_X2AP_ID() { set(id_New_eNB_UE_X2AP_ID); type=1;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(id_SeNB_UE_X2AP_ID_Extension); type=2;}
-               void select_id_resumeID() { set(id_resumeID); type=3;}
-               void select_id_ShortMAC_I() { set(id_ShortMAC_I); type=4;}
-               void select_id_NewEUTRANCellIdentifier() { set(id_NewEUTRANCellIdentifier); type=5;}
-               void select_id_FailureCellCRNTI() { set(id_FailureCellCRNTI); type=6;}
-               void select_id_FailureCellPCI() { set(id_FailureCellPCI); type=7;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_New_eNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_SeNB_UE_X2AP_ID_Extension)) { type = 2; return true; }
-                       else if(equal(id_resumeID)) { type = 3; return true; }
-                       else if(equal(id_ShortMAC_I)) { type = 4; return true; }
-                       else if(equal(id_NewEUTRANCellIdentifier)) { type = 5; return true; }
-                       else if(equal(id_FailureCellCRNTI)) { type = 6; return true; }
-                       else if(equal(id_FailureCellPCI)) { type = 7; return true; }
-                       else { type = 8; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_New_eNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID_Extension);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_resumeID);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_ShortMAC_I);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_NewEUTRANCellIdentifier);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(id_FailureCellCRNTI);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(id_FailureCellPCI);} return false;
-                       case 8: type = 8; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 8; }
-               void clear() {type = 0;}
-               void select_id_New_eNB_UE_X2AP_ID() { set(reject); type=1;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(reject); type=2;}
-               void select_id_resumeID() { set(reject); type=3;}
-               void select_id_ShortMAC_I() { set(reject); type=4;}
-               void select_id_NewEUTRANCellIdentifier() { set(reject); type=5;}
-               void select_id_FailureCellCRNTI() { set(reject); type=6;}
-               void select_id_FailureCellPCI() { set(reject); type=7;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(reject)) { type = 3; return true; }
-                       else if(equal(reject)) { type = 4; return true; }
-                       else if(equal(reject)) { type = 5; return true; }
-                       else if(equal(reject)) { type = 6; return true; }
-                       else if(equal(reject)) { type = 7; return true; }
-                       else { type = 8; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 8: type = 8; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_New_eNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_New_eNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               UE_X2AP_ID_Extension& select_id_SeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(2); }
-               UE_X2AP_ID_Extension const* get_id_SeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(2); }
-               ResumeID& select_id_resumeID() { return set<ResumeID>(3); }
-               ResumeID const* get_id_resumeID() const { return get<ResumeID>(3); }
-               ShortMAC_I& select_id_ShortMAC_I() { return set<ShortMAC_I>(4); }
-               ShortMAC_I const* get_id_ShortMAC_I() const { return get<ShortMAC_I>(4); }
-               EUTRANCellIdentifier& select_id_NewEUTRANCellIdentifier() { return set<EUTRANCellIdentifier>(5); }
-               EUTRANCellIdentifier const* get_id_NewEUTRANCellIdentifier() const { return get<EUTRANCellIdentifier>(5); }
-               CRNTI& select_id_FailureCellCRNTI() { return set<CRNTI>(6); }
-               CRNTI const* get_id_FailureCellCRNTI() const { return get<CRNTI>(6); }
-               PCI& select_id_FailureCellPCI() { return set<PCI>(7); }
-               PCI const* get_id_FailureCellPCI() const { return get<PCI>(7); }
-               bool is_unknown() const { return type == 8; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 3: var.destroy<ResumeID>(); break;
-                       case 4: var.destroy<ShortMAC_I>(); break;
-                       case 5: var.destroy<EUTRANCellIdentifier>(); break;
-                       case 6: var.destroy<CRNTI>(); break;
-                       case 7: var.destroy<PCI>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<UE_X2AP_ID_Extension>(2);
-                       v.template operator()<ResumeID>(3);
-                       v.template operator()<ShortMAC_I>(4);
-                       v.template operator()<EUTRANCellIdentifier>(5);
-                       v.template operator()<CRNTI>(6);
-                       v.template operator()<PCI>(7);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_New_eNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_SeNB_UE_X2AP_ID_Extension()); return true;
-                       case 3: v(select_id_resumeID()); return true;
-                       case 4: v(select_id_ShortMAC_I()); return true;
-                       case 5: v(select_id_NewEUTRANCellIdentifier()); return true;
-                       case 6: v(select_id_FailureCellCRNTI()); return true;
-                       case 7: v(select_id_FailureCellPCI()); return true;
-                       case 8: if(type != 8) {clear(); asn::base::set();} type = 8; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 3: v(var.as<ResumeID>()); return true;
-                       case 4: v(var.as<ShortMAC_I>()); return true;
-                       case 5: v(var.as<EUTRANCellIdentifier>()); return true;
-                       case 6: v(var.as<CRNTI>()); return true;
-                       case 7: v(var.as<PCI>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(CRNTI)];
-                       char dummy2[sizeof(EUTRANCellIdentifier)];
-                       char dummy3[sizeof(PCI)];
-                       char dummy4[sizeof(ResumeID)];
-                       char dummy5[sizeof(ShortMAC_I)];
-                       char dummy6[sizeof(UE_X2AP_ID)];
-                       char dummy7[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 8; }
-               void clear() {type = 0;}
-               void select_id_New_eNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(optional); type=2;}
-               void select_id_resumeID() { set(mandatory); type=3;}
-               void select_id_ShortMAC_I() { set(mandatory); type=4;}
-               void select_id_NewEUTRANCellIdentifier() { set(mandatory); type=5;}
-               void select_id_FailureCellCRNTI() { set(optional); type=6;}
-               void select_id_FailureCellPCI() { set(optional); type=7;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else if(equal(mandatory)) { type = 4; return true; }
-                       else if(equal(mandatory)) { type = 5; return true; }
-                       else if(equal(optional)) { type = 6; return true; }
-                       else if(equal(optional)) { type = 7; return true; }
-                       else { type = 8; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 8: type = 8; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-RetrieveUEContextRequest ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{ RetrieveUEContextRequest-IEs}},
-       ...
-}
-*/
-
-struct RetrieveUEContextRequest : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "RetrieveUEContextRequest";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<RetrieveUEContextRequest_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<RetrieveUEContextRequest_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-UE-ContextInformationRetrieve-ExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-{ ID id-UESidelinkAggregateMaximumBitRate      CRITICALITY ignore      EXTENSION UESidelinkAggregateMaximumBitRate             PRESENCE optional},
-       ...
-}
-*/
-
-struct UE_ContextInformationRetrieve_ExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_UESidelinkAggregateMaximumBitRate() { set(id_UESidelinkAggregateMaximumBitRate); type=1;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_UESidelinkAggregateMaximumBitRate)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_UESidelinkAggregateMaximumBitRate);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_UESidelinkAggregateMaximumBitRate() { set(ignore); type=1;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               UESidelinkAggregateMaximumBitRate& select_id_UESidelinkAggregateMaximumBitRate() { return set<UESidelinkAggregateMaximumBitRate>(1); }
-               UESidelinkAggregateMaximumBitRate const* get_id_UESidelinkAggregateMaximumBitRate() const { return get<UESidelinkAggregateMaximumBitRate>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UESidelinkAggregateMaximumBitRate>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UESidelinkAggregateMaximumBitRate>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_UESidelinkAggregateMaximumBitRate()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UESidelinkAggregateMaximumBitRate>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(UESidelinkAggregateMaximumBitRate)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_UESidelinkAggregateMaximumBitRate() { set(optional); type=1;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(optional)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-UE-ContextInformationRetrieve ::= SEQUENCE {
-       mME-UE-S1AP-ID                                          UE-S1AP-ID,
-       uESecurityCapabilities                          UESecurityCapabilities,
-       aS-SecurityInformation                          AS-SecurityInformation,
-       uEaggregateMaximumBitRate                       UEAggregateMaximumBitRate,
-       subscriberProfileIDforRFP                       SubscriberProfileIDforRFP               OPTIONAL,
-       e-RABs-ToBeSetup-ListRetrieve           E-RABs-ToBeSetup-ListRetrieve,
-       rRC-Context                                                     RRC-Context,
-       handoverRestrictionList                         HandoverRestrictionList                 OPTIONAL,
-       locationReportingInformation            LocationReportingInformation    OPTIONAL,
-       managBasedMDTallowed                            ManagementBasedMDTallowed               OPTIONAL,
-       managBasedMDTPLMNList                           MDTPLMNList                                             OPTIONAL,
-       iE-Extensions                                           ProtocolExtensionContainer { {UE-ContextInformationRetrieve-ExtIEs} } OPTIONAL,
-       ...
-}
-*/
-
-struct UE_ContextInformationRetrieve : asn::sequence<12, 0, true, 6>
-{
-       static constexpr const char* name() {return "UE-ContextInformationRetrieve";}
-       using parent_t = asn::sequence<12, 0, true, 6>;
-       struct mME_UE_S1AP_ID_t : UE_S1AP_ID
-       {
-               static constexpr const char* name() {return "mME_UE_S1AP_ID_t";}
-               using parent_t = UE_S1AP_ID;
-
-       };
-       mME_UE_S1AP_ID_t& ref_mME_UE_S1AP_ID() {return mME_UE_S1AP_ID;}
-       mME_UE_S1AP_ID_t const& ref_mME_UE_S1AP_ID() const {return mME_UE_S1AP_ID;}
-       struct uESecurityCapabilities_t : UESecurityCapabilities
-       {
-               static constexpr const char* name() {return "uESecurityCapabilities_t";}
-               using parent_t = UESecurityCapabilities;
-
-       };
-       uESecurityCapabilities_t& ref_uESecurityCapabilities() {return uESecurityCapabilities;}
-       uESecurityCapabilities_t const& ref_uESecurityCapabilities() const {return uESecurityCapabilities;}
-       struct aS_SecurityInformation_t : AS_SecurityInformation
-       {
-               static constexpr const char* name() {return "aS_SecurityInformation_t";}
-               using parent_t = AS_SecurityInformation;
-
-       };
-       aS_SecurityInformation_t& ref_aS_SecurityInformation() {return aS_SecurityInformation;}
-       aS_SecurityInformation_t const& ref_aS_SecurityInformation() const {return aS_SecurityInformation;}
-       struct uEaggregateMaximumBitRate_t : UEAggregateMaximumBitRate
-       {
-               static constexpr const char* name() {return "uEaggregateMaximumBitRate_t";}
-               using parent_t = UEAggregateMaximumBitRate;
-
-       };
-       uEaggregateMaximumBitRate_t& ref_uEaggregateMaximumBitRate() {return uEaggregateMaximumBitRate;}
-       uEaggregateMaximumBitRate_t const& ref_uEaggregateMaximumBitRate() const {return uEaggregateMaximumBitRate;}
-       struct subscriberProfileIDforRFP_t : SubscriberProfileIDforRFP
-       {
-               static constexpr const char* name() {return "subscriberProfileIDforRFP_t";}
-               using parent_t = SubscriberProfileIDforRFP;
-               static constexpr bool optional = true;
-
-       };
-       subscriberProfileIDforRFP_t& set_subscriberProfileIDforRFP() { subscriberProfileIDforRFP.setpresent(true); return subscriberProfileIDforRFP;}
-       subscriberProfileIDforRFP_t const* get_subscriberProfileIDforRFP() const {return subscriberProfileIDforRFP.is_valid() ? &subscriberProfileIDforRFP : nullptr;}
-       struct e_RABs_ToBeSetup_ListRetrieve_t : E_RABs_ToBeSetup_ListRetrieve
-       {
-               static constexpr const char* name() {return "e_RABs_ToBeSetup_ListRetrieve_t";}
-               using parent_t = E_RABs_ToBeSetup_ListRetrieve;
-
-       };
-       e_RABs_ToBeSetup_ListRetrieve_t& ref_e_RABs_ToBeSetup_ListRetrieve() {return e_RABs_ToBeSetup_ListRetrieve;}
-       e_RABs_ToBeSetup_ListRetrieve_t const& ref_e_RABs_ToBeSetup_ListRetrieve() const {return e_RABs_ToBeSetup_ListRetrieve;}
-       struct rRC_Context_t : RRC_Context
-       {
-               static constexpr const char* name() {return "rRC_Context_t";}
-               using parent_t = RRC_Context;
-
-       };
-       rRC_Context_t& ref_rRC_Context() {return rRC_Context;}
-       rRC_Context_t const& ref_rRC_Context() const {return rRC_Context;}
-       struct handoverRestrictionList_t : HandoverRestrictionList
-       {
-               static constexpr const char* name() {return "handoverRestrictionList_t";}
-               using parent_t = HandoverRestrictionList;
-               static constexpr bool optional = true;
-
-       };
-       handoverRestrictionList_t& set_handoverRestrictionList() { handoverRestrictionList.setpresent(true); return handoverRestrictionList;}
-       handoverRestrictionList_t const* get_handoverRestrictionList() const {return handoverRestrictionList.is_valid() ? &handoverRestrictionList : nullptr;}
-       struct locationReportingInformation_t : LocationReportingInformation
-       {
-               static constexpr const char* name() {return "locationReportingInformation_t";}
-               using parent_t = LocationReportingInformation;
-               static constexpr bool optional = true;
-
-       };
-       locationReportingInformation_t& set_locationReportingInformation() { locationReportingInformation.setpresent(true); return locationReportingInformation;}
-       locationReportingInformation_t const* get_locationReportingInformation() const {return locationReportingInformation.is_valid() ? &locationReportingInformation : nullptr;}
-       struct managBasedMDTallowed_t : ManagementBasedMDTallowed
-       {
-               static constexpr const char* name() {return "managBasedMDTallowed_t";}
-               using parent_t = ManagementBasedMDTallowed;
-               static constexpr bool optional = true;
-
-       };
-       managBasedMDTallowed_t& set_managBasedMDTallowed() { managBasedMDTallowed.setpresent(true); return managBasedMDTallowed;}
-       managBasedMDTallowed_t const* get_managBasedMDTallowed() const {return managBasedMDTallowed.is_valid() ? &managBasedMDTallowed : nullptr;}
-       struct managBasedMDTPLMNList_t : MDTPLMNList
-       {
-               static constexpr const char* name() {return "managBasedMDTPLMNList_t";}
-               using parent_t = MDTPLMNList;
-               static constexpr bool optional = true;
-
-       };
-       managBasedMDTPLMNList_t& set_managBasedMDTPLMNList() { managBasedMDTPLMNList.setpresent(true); return managBasedMDTPLMNList;}
-       managBasedMDTPLMNList_t const* get_managBasedMDTPLMNList() const {return managBasedMDTPLMNList.is_valid() ? &managBasedMDTPLMNList : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<UE_ContextInformationRetrieve_ExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<UE_ContextInformationRetrieve_ExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(mME_UE_S1AP_ID);
-               v(uESecurityCapabilities);
-               v(aS_SecurityInformation);
-               v(uEaggregateMaximumBitRate);
-               v(subscriberProfileIDforRFP);
-               v(e_RABs_ToBeSetup_ListRetrieve);
-               v(rRC_Context);
-               v(handoverRestrictionList);
-               v(locationReportingInformation);
-               v(managBasedMDTallowed);
-               v(managBasedMDTPLMNList);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(mME_UE_S1AP_ID);
-               v(uESecurityCapabilities);
-               v(aS_SecurityInformation);
-               v(uEaggregateMaximumBitRate);
-               v(subscriberProfileIDforRFP);
-               v(e_RABs_ToBeSetup_ListRetrieve);
-               v(rRC_Context);
-               v(handoverRestrictionList);
-               v(locationReportingInformation);
-               v(managBasedMDTallowed);
-               v(managBasedMDTPLMNList);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               mME_UE_S1AP_ID.clear();
-               uESecurityCapabilities.clear();
-               aS_SecurityInformation.clear();
-               uEaggregateMaximumBitRate.clear();
-               subscriberProfileIDforRFP.clear();
-               e_RABs_ToBeSetup_ListRetrieve.clear();
-               rRC_Context.clear();
-               handoverRestrictionList.clear();
-               locationReportingInformation.clear();
-               managBasedMDTallowed.clear();
-               managBasedMDTPLMNList.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       mME_UE_S1AP_ID_t        mME_UE_S1AP_ID;
-       uESecurityCapabilities_t        uESecurityCapabilities;
-       aS_SecurityInformation_t        aS_SecurityInformation;
-       uEaggregateMaximumBitRate_t     uEaggregateMaximumBitRate;
-       subscriberProfileIDforRFP_t     subscriberProfileIDforRFP;
-       e_RABs_ToBeSetup_ListRetrieve_t e_RABs_ToBeSetup_ListRetrieve;
-       rRC_Context_t   rRC_Context;
-       handoverRestrictionList_t       handoverRestrictionList;
-       locationReportingInformation_t  locationReportingInformation;
-       managBasedMDTallowed_t  managBasedMDTallowed;
-       managBasedMDTPLMNList_t managBasedMDTPLMNList;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-RetrieveUEContextResponse-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-New-eNB-UE-X2AP-ID                              CRITICALITY ignore      TYPE UE-X2AP-ID                                                 PRESENCE mandatory}|
-       { ID id-New-eNB-UE-X2AP-ID-Extension    CRITICALITY ignore      TYPE UE-X2AP-ID-Extension                               PRESENCE optional}|
-       { ID id-Old-eNB-UE-X2AP-ID                              CRITICALITY ignore      TYPE UE-X2AP-ID                                                 PRESENCE mandatory}|
-       { ID id-Old-eNB-UE-X2AP-ID-Extension    CRITICALITY ignore      TYPE UE-X2AP-ID-Extension                               PRESENCE optional}|
-       { ID id-GUMMEI-ID                                               CRITICALITY reject      TYPE GUMMEI                                                             PRESENCE mandatory}|
-       { ID id-UE-ContextInformationRetrieve   CRITICALITY reject      TYPE UE-ContextInformationRetrieve      PRESENCE mandatory}|
-       { ID id-TraceActivation                                 CRITICALITY ignore      TYPE TraceActivation                                    PRESENCE optional}|
-       { ID id-SRVCCOperationPossible                  CRITICALITY ignore      TYPE SRVCCOperationPossible                             PRESENCE optional}|
-       { ID id-Masked-IMEISV                                   CRITICALITY ignore      TYPE Masked-IMEISV                                              PRESENCE optional}|
-       { ID id-ExpectedUEBehaviour                             CRITICALITY ignore      TYPE ExpectedUEBehaviour                                PRESENCE optional}|
-       { ID id-ProSeAuthorized                                 CRITICALITY ignore      TYPE ProSeAuthorized                                    PRESENCE optional}|
-       { ID id-CriticalityDiagnostics                  CRITICALITY ignore      TYPE CriticalityDiagnostics                             PRESENCE optional}|
-       { ID id-V2XServicesAuthorized                   CRITICALITY ignore      TYPE V2XServicesAuthorized                              PRESENCE optional}|
-       { ID id-AerialUEsubscriptionInformation CRITICALITY ignore      TYPE AerialUEsubscriptionInformation    PRESENCE optional}|
-       { ID id-Subscription-Based-UE-DifferentiationInfo                       CRITICALITY ignore      TYPE Subscription-Based-UE-DifferentiationInfo                          PRESENCE optional},
-       ...
-}
-*/
-
-struct RetrieveUEContextResponse_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 16; }
-               void clear() {type = 0;}
-               void select_id_New_eNB_UE_X2AP_ID() { set(id_New_eNB_UE_X2AP_ID); type=1;}
-               void select_id_New_eNB_UE_X2AP_ID_Extension() { set(id_New_eNB_UE_X2AP_ID_Extension); type=2;}
-               void select_id_Old_eNB_UE_X2AP_ID() { set(id_Old_eNB_UE_X2AP_ID); type=3;}
-               void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(id_Old_eNB_UE_X2AP_ID_Extension); type=4;}
-               void select_id_GUMMEI_ID() { set(id_GUMMEI_ID); type=5;}
-               void select_id_UE_ContextInformationRetrieve() { set(id_UE_ContextInformationRetrieve); type=6;}
-               void select_id_TraceActivation() { set(id_TraceActivation); type=7;}
-               void select_id_SRVCCOperationPossible() { set(id_SRVCCOperationPossible); type=8;}
-               void select_id_Masked_IMEISV() { set(id_Masked_IMEISV); type=9;}
-               void select_id_ExpectedUEBehaviour() { set(id_ExpectedUEBehaviour); type=10;}
-               void select_id_ProSeAuthorized() { set(id_ProSeAuthorized); type=11;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=12;}
-               void select_id_V2XServicesAuthorized() { set(id_V2XServicesAuthorized); type=13;}
-               void select_id_AerialUEsubscriptionInformation() { set(id_AerialUEsubscriptionInformation); type=14;}
-               void select_id_Subscription_Based_UE_DifferentiationInfo() { set(id_Subscription_Based_UE_DifferentiationInfo); type=15;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_New_eNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_New_eNB_UE_X2AP_ID_Extension)) { type = 2; return true; }
-                       else if(equal(id_Old_eNB_UE_X2AP_ID)) { type = 3; return true; }
-                       else if(equal(id_Old_eNB_UE_X2AP_ID_Extension)) { type = 4; return true; }
-                       else if(equal(id_GUMMEI_ID)) { type = 5; return true; }
-                       else if(equal(id_UE_ContextInformationRetrieve)) { type = 6; return true; }
-                       else if(equal(id_TraceActivation)) { type = 7; return true; }
-                       else if(equal(id_SRVCCOperationPossible)) { type = 8; return true; }
-                       else if(equal(id_Masked_IMEISV)) { type = 9; return true; }
-                       else if(equal(id_ExpectedUEBehaviour)) { type = 10; return true; }
-                       else if(equal(id_ProSeAuthorized)) { type = 11; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 12; return true; }
-                       else if(equal(id_V2XServicesAuthorized)) { type = 13; return true; }
-                       else if(equal(id_AerialUEsubscriptionInformation)) { type = 14; return true; }
-                       else if(equal(id_Subscription_Based_UE_DifferentiationInfo)) { type = 15; return true; }
-                       else { type = 16; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_New_eNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_New_eNB_UE_X2AP_ID_Extension);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_Old_eNB_UE_X2AP_ID);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_Old_eNB_UE_X2AP_ID_Extension);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_GUMMEI_ID);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(id_UE_ContextInformationRetrieve);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(id_TraceActivation);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(id_SRVCCOperationPossible);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(id_Masked_IMEISV);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(id_ExpectedUEBehaviour);} return false;
-                       case 11: type = 11; if(v(ref_nested())) { return equal(id_ProSeAuthorized);} return false;
-                       case 12: type = 12; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 13: type = 13; if(v(ref_nested())) { return equal(id_V2XServicesAuthorized);} return false;
-                       case 14: type = 14; if(v(ref_nested())) { return equal(id_AerialUEsubscriptionInformation);} return false;
-                       case 15: type = 15; if(v(ref_nested())) { return equal(id_Subscription_Based_UE_DifferentiationInfo);} return false;
-                       case 16: type = 16; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 16; }
-               void clear() {type = 0;}
-               void select_id_New_eNB_UE_X2AP_ID() { set(ignore); type=1;}
-               void select_id_New_eNB_UE_X2AP_ID_Extension() { set(ignore); type=2;}
-               void select_id_Old_eNB_UE_X2AP_ID() { set(ignore); type=3;}
-               void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(ignore); type=4;}
-               void select_id_GUMMEI_ID() { set(reject); type=5;}
-               void select_id_UE_ContextInformationRetrieve() { set(reject); type=6;}
-               void select_id_TraceActivation() { set(ignore); type=7;}
-               void select_id_SRVCCOperationPossible() { set(ignore); type=8;}
-               void select_id_Masked_IMEISV() { set(ignore); type=9;}
-               void select_id_ExpectedUEBehaviour() { set(ignore); type=10;}
-               void select_id_ProSeAuthorized() { set(ignore); type=11;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=12;}
-               void select_id_V2XServicesAuthorized() { set(ignore); type=13;}
-               void select_id_AerialUEsubscriptionInformation() { set(ignore); type=14;}
-               void select_id_Subscription_Based_UE_DifferentiationInfo() { set(ignore); type=15;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else if(equal(reject)) { type = 5; return true; }
-                       else if(equal(reject)) { type = 6; return true; }
-                       else if(equal(ignore)) { type = 7; return true; }
-                       else if(equal(ignore)) { type = 8; return true; }
-                       else if(equal(ignore)) { type = 9; return true; }
-                       else if(equal(ignore)) { type = 10; return true; }
-                       else if(equal(ignore)) { type = 11; return true; }
-                       else if(equal(ignore)) { type = 12; return true; }
-                       else if(equal(ignore)) { type = 13; return true; }
-                       else if(equal(ignore)) { type = 14; return true; }
-                       else if(equal(ignore)) { type = 15; return true; }
-                       else { type = 16; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 11: type = 11; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 12: type = 12; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 13: type = 13; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 14: type = 14; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 15: type = 15; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 16: type = 16; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_New_eNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_New_eNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               UE_X2AP_ID_Extension& select_id_New_eNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(2); }
-               UE_X2AP_ID_Extension const* get_id_New_eNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(2); }
-               UE_X2AP_ID& select_id_Old_eNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(3); }
-               UE_X2AP_ID const* get_id_Old_eNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(3); }
-               UE_X2AP_ID_Extension& select_id_Old_eNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(4); }
-               UE_X2AP_ID_Extension const* get_id_Old_eNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(4); }
-               GUMMEI& select_id_GUMMEI_ID() { return set<GUMMEI>(5); }
-               GUMMEI const* get_id_GUMMEI_ID() const { return get<GUMMEI>(5); }
-               UE_ContextInformationRetrieve& select_id_UE_ContextInformationRetrieve() { return set<UE_ContextInformationRetrieve>(6); }
-               UE_ContextInformationRetrieve const* get_id_UE_ContextInformationRetrieve() const { return get<UE_ContextInformationRetrieve>(6); }
-               TraceActivation& select_id_TraceActivation() { return set<TraceActivation>(7); }
-               TraceActivation const* get_id_TraceActivation() const { return get<TraceActivation>(7); }
-               SRVCCOperationPossible& select_id_SRVCCOperationPossible() { return set<SRVCCOperationPossible>(8); }
-               SRVCCOperationPossible const* get_id_SRVCCOperationPossible() const { return get<SRVCCOperationPossible>(8); }
-               Masked_IMEISV& select_id_Masked_IMEISV() { return set<Masked_IMEISV>(9); }
-               Masked_IMEISV const* get_id_Masked_IMEISV() const { return get<Masked_IMEISV>(9); }
-               ExpectedUEBehaviour& select_id_ExpectedUEBehaviour() { return set<ExpectedUEBehaviour>(10); }
-               ExpectedUEBehaviour const* get_id_ExpectedUEBehaviour() const { return get<ExpectedUEBehaviour>(10); }
-               ProSeAuthorized& select_id_ProSeAuthorized() { return set<ProSeAuthorized>(11); }
-               ProSeAuthorized const* get_id_ProSeAuthorized() const { return get<ProSeAuthorized>(11); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(12); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(12); }
-               V2XServicesAuthorized& select_id_V2XServicesAuthorized() { return set<V2XServicesAuthorized>(13); }
-               V2XServicesAuthorized const* get_id_V2XServicesAuthorized() const { return get<V2XServicesAuthorized>(13); }
-               AerialUEsubscriptionInformation& select_id_AerialUEsubscriptionInformation() { return set<AerialUEsubscriptionInformation>(14); }
-               AerialUEsubscriptionInformation const* get_id_AerialUEsubscriptionInformation() const { return get<AerialUEsubscriptionInformation>(14); }
-               Subscription_Based_UE_DifferentiationInfo& select_id_Subscription_Based_UE_DifferentiationInfo() { return set<Subscription_Based_UE_DifferentiationInfo>(15); }
-               Subscription_Based_UE_DifferentiationInfo const* get_id_Subscription_Based_UE_DifferentiationInfo() const { return get<Subscription_Based_UE_DifferentiationInfo>(15); }
-               bool is_unknown() const { return type == 16; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 3: var.destroy<UE_X2AP_ID>(); break;
-                       case 4: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 5: var.destroy<GUMMEI>(); break;
-                       case 6: var.destroy<UE_ContextInformationRetrieve>(); break;
-                       case 7: var.destroy<TraceActivation>(); break;
-                       case 8: var.destroy<SRVCCOperationPossible>(); break;
-                       case 9: var.destroy<Masked_IMEISV>(); break;
-                       case 10: var.destroy<ExpectedUEBehaviour>(); break;
-                       case 11: var.destroy<ProSeAuthorized>(); break;
-                       case 12: var.destroy<CriticalityDiagnostics>(); break;
-                       case 13: var.destroy<V2XServicesAuthorized>(); break;
-                       case 14: var.destroy<AerialUEsubscriptionInformation>(); break;
-                       case 15: var.destroy<Subscription_Based_UE_DifferentiationInfo>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<UE_X2AP_ID_Extension>(2);
-                       v.template operator()<UE_X2AP_ID>(3);
-                       v.template operator()<UE_X2AP_ID_Extension>(4);
-                       v.template operator()<GUMMEI>(5);
-                       v.template operator()<UE_ContextInformationRetrieve>(6);
-                       v.template operator()<TraceActivation>(7);
-                       v.template operator()<SRVCCOperationPossible>(8);
-                       v.template operator()<Masked_IMEISV>(9);
-                       v.template operator()<ExpectedUEBehaviour>(10);
-                       v.template operator()<ProSeAuthorized>(11);
-                       v.template operator()<CriticalityDiagnostics>(12);
-                       v.template operator()<V2XServicesAuthorized>(13);
-                       v.template operator()<AerialUEsubscriptionInformation>(14);
-                       v.template operator()<Subscription_Based_UE_DifferentiationInfo>(15);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_New_eNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_New_eNB_UE_X2AP_ID_Extension()); return true;
-                       case 3: v(select_id_Old_eNB_UE_X2AP_ID()); return true;
-                       case 4: v(select_id_Old_eNB_UE_X2AP_ID_Extension()); return true;
-                       case 5: v(select_id_GUMMEI_ID()); return true;
-                       case 6: v(select_id_UE_ContextInformationRetrieve()); return true;
-                       case 7: v(select_id_TraceActivation()); return true;
-                       case 8: v(select_id_SRVCCOperationPossible()); return true;
-                       case 9: v(select_id_Masked_IMEISV()); return true;
-                       case 10: v(select_id_ExpectedUEBehaviour()); return true;
-                       case 11: v(select_id_ProSeAuthorized()); return true;
-                       case 12: v(select_id_CriticalityDiagnostics()); return true;
-                       case 13: v(select_id_V2XServicesAuthorized()); return true;
-                       case 14: v(select_id_AerialUEsubscriptionInformation()); return true;
-                       case 15: v(select_id_Subscription_Based_UE_DifferentiationInfo()); return true;
-                       case 16: if(type != 16) {clear(); asn::base::set();} type = 16; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 3: v(var.as<UE_X2AP_ID>()); return true;
-                       case 4: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 5: v(var.as<GUMMEI>()); return true;
-                       case 6: v(var.as<UE_ContextInformationRetrieve>()); return true;
-                       case 7: v(var.as<TraceActivation>()); return true;
-                       case 8: v(var.as<SRVCCOperationPossible>()); return true;
-                       case 9: v(var.as<Masked_IMEISV>()); return true;
-                       case 10: v(var.as<ExpectedUEBehaviour>()); return true;
-                       case 11: v(var.as<ProSeAuthorized>()); return true;
-                       case 12: v(var.as<CriticalityDiagnostics>()); return true;
-                       case 13: v(var.as<V2XServicesAuthorized>()); return true;
-                       case 14: v(var.as<AerialUEsubscriptionInformation>()); return true;
-                       case 15: v(var.as<Subscription_Based_UE_DifferentiationInfo>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(AerialUEsubscriptionInformation)];
-                       char dummy2[sizeof(CriticalityDiagnostics)];
-                       char dummy3[sizeof(ExpectedUEBehaviour)];
-                       char dummy4[sizeof(GUMMEI)];
-                       char dummy5[sizeof(Masked_IMEISV)];
-                       char dummy6[sizeof(ProSeAuthorized)];
-                       char dummy7[sizeof(SRVCCOperationPossible)];
-                       char dummy8[sizeof(Subscription_Based_UE_DifferentiationInfo)];
-                       char dummy9[sizeof(TraceActivation)];
-                       char dummy10[sizeof(UE_ContextInformationRetrieve)];
-                       char dummy11[sizeof(UE_X2AP_ID)];
-                       char dummy12[sizeof(UE_X2AP_ID_Extension)];
-                       char dummy13[sizeof(V2XServicesAuthorized)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 16; }
-               void clear() {type = 0;}
-               void select_id_New_eNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_New_eNB_UE_X2AP_ID_Extension() { set(optional); type=2;}
-               void select_id_Old_eNB_UE_X2AP_ID() { set(mandatory); type=3;}
-               void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(optional); type=4;}
-               void select_id_GUMMEI_ID() { set(mandatory); type=5;}
-               void select_id_UE_ContextInformationRetrieve() { set(mandatory); type=6;}
-               void select_id_TraceActivation() { set(optional); type=7;}
-               void select_id_SRVCCOperationPossible() { set(optional); type=8;}
-               void select_id_Masked_IMEISV() { set(optional); type=9;}
-               void select_id_ExpectedUEBehaviour() { set(optional); type=10;}
-               void select_id_ProSeAuthorized() { set(optional); type=11;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=12;}
-               void select_id_V2XServicesAuthorized() { set(optional); type=13;}
-               void select_id_AerialUEsubscriptionInformation() { set(optional); type=14;}
-               void select_id_Subscription_Based_UE_DifferentiationInfo() { set(optional); type=15;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(mandatory)) { type = 5; return true; }
-                       else if(equal(mandatory)) { type = 6; return true; }
-                       else if(equal(optional)) { type = 7; return true; }
-                       else if(equal(optional)) { type = 8; return true; }
-                       else if(equal(optional)) { type = 9; return true; }
-                       else if(equal(optional)) { type = 10; return true; }
-                       else if(equal(optional)) { type = 11; return true; }
-                       else if(equal(optional)) { type = 12; return true; }
-                       else if(equal(optional)) { type = 13; return true; }
-                       else if(equal(optional)) { type = 14; return true; }
-                       else if(equal(optional)) { type = 15; return true; }
-                       else { type = 16; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 11: type = 11; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 12: type = 12; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 13: type = 13; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 14: type = 14; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 15: type = 15; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 16: type = 16; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-RetrieveUEContextResponse ::= SEQUENCE {
-       protocolIEs                     ProtocolIE-Container    {{ RetrieveUEContextResponse-IEs}},
-       ...
-}
-*/
-
-struct RetrieveUEContextResponse : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "RetrieveUEContextResponse";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<RetrieveUEContextResponse_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<RetrieveUEContextResponse_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-SNStatusTransfer-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-Old-eNB-UE-X2AP-ID                                              CRITICALITY reject      TYPE UE-X2AP-ID                                                                         PRESENCE mandatory}|
-       { ID id-New-eNB-UE-X2AP-ID                                              CRITICALITY reject      TYPE UE-X2AP-ID                                                                         PRESENCE mandatory}|
-       { ID id-E-RABs-SubjectToStatusTransfer-List             CRITICALITY ignore      TYPE E-RABs-SubjectToStatusTransfer-List                PRESENCE mandatory}|
-       { ID id-Old-eNB-UE-X2AP-ID-Extension                    CRITICALITY reject      TYPE UE-X2AP-ID-Extension                                                       PRESENCE optional}|
-       { ID id-New-eNB-UE-X2AP-ID-Extension                    CRITICALITY reject      TYPE UE-X2AP-ID-Extension                                                       PRESENCE optional}|
-       { ID id-SgNB-UE-X2AP-ID                                                 CRITICALITY ignore      TYPE SgNB-UE-X2AP-ID                                                                    PRESENCE optional},
-       ...
-}
-*/
-
-struct SNStatusTransfer_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 7; }
-               void clear() {type = 0;}
-               void select_id_Old_eNB_UE_X2AP_ID() { set(id_Old_eNB_UE_X2AP_ID); type=1;}
-               void select_id_New_eNB_UE_X2AP_ID() { set(id_New_eNB_UE_X2AP_ID); type=2;}
-               void select_id_E_RABs_SubjectToStatusTransfer_List() { set(id_E_RABs_SubjectToStatusTransfer_List); type=3;}
-               void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(id_Old_eNB_UE_X2AP_ID_Extension); type=4;}
-               void select_id_New_eNB_UE_X2AP_ID_Extension() { set(id_New_eNB_UE_X2AP_ID_Extension); type=5;}
-               void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=6;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_Old_eNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_New_eNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_E_RABs_SubjectToStatusTransfer_List)) { type = 3; return true; }
-                       else if(equal(id_Old_eNB_UE_X2AP_ID_Extension)) { type = 4; return true; }
-                       else if(equal(id_New_eNB_UE_X2AP_ID_Extension)) { type = 5; return true; }
-                       else if(equal(id_SgNB_UE_X2AP_ID)) { type = 6; return true; }
-                       else { type = 7; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_Old_eNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_New_eNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_E_RABs_SubjectToStatusTransfer_List);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_Old_eNB_UE_X2AP_ID_Extension);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_New_eNB_UE_X2AP_ID_Extension);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false;
-                       case 7: type = 7; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 7; }
-               void clear() {type = 0;}
-               void select_id_Old_eNB_UE_X2AP_ID() { set(reject); type=1;}
-               void select_id_New_eNB_UE_X2AP_ID() { set(reject); type=2;}
-               void select_id_E_RABs_SubjectToStatusTransfer_List() { set(ignore); type=3;}
-               void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(reject); type=4;}
-               void select_id_New_eNB_UE_X2AP_ID_Extension() { set(reject); type=5;}
-               void select_id_SgNB_UE_X2AP_ID() { set(ignore); type=6;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(reject)) { type = 4; return true; }
-                       else if(equal(reject)) { type = 5; return true; }
-                       else if(equal(ignore)) { type = 6; return true; }
-                       else { type = 7; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 7: type = 7; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_Old_eNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_Old_eNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               UE_X2AP_ID& select_id_New_eNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(2); }
-               UE_X2AP_ID const* get_id_New_eNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(2); }
-               E_RABs_SubjectToStatusTransfer_List& select_id_E_RABs_SubjectToStatusTransfer_List() { return set<E_RABs_SubjectToStatusTransfer_List>(3); }
-               E_RABs_SubjectToStatusTransfer_List const* get_id_E_RABs_SubjectToStatusTransfer_List() const { return get<E_RABs_SubjectToStatusTransfer_List>(3); }
-               UE_X2AP_ID_Extension& select_id_Old_eNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(4); }
-               UE_X2AP_ID_Extension const* get_id_Old_eNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(4); }
-               UE_X2AP_ID_Extension& select_id_New_eNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(5); }
-               UE_X2AP_ID_Extension const* get_id_New_eNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(5); }
-               SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set<SgNB_UE_X2AP_ID>(6); }
-               SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get<SgNB_UE_X2AP_ID>(6); }
-               bool is_unknown() const { return type == 7; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<UE_X2AP_ID>(); break;
-                       case 3: var.destroy<E_RABs_SubjectToStatusTransfer_List>(); break;
-                       case 4: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 5: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 6: var.destroy<SgNB_UE_X2AP_ID>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<UE_X2AP_ID>(2);
-                       v.template operator()<E_RABs_SubjectToStatusTransfer_List>(3);
-                       v.template operator()<UE_X2AP_ID_Extension>(4);
-                       v.template operator()<UE_X2AP_ID_Extension>(5);
-                       v.template operator()<SgNB_UE_X2AP_ID>(6);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_Old_eNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_New_eNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_E_RABs_SubjectToStatusTransfer_List()); return true;
-                       case 4: v(select_id_Old_eNB_UE_X2AP_ID_Extension()); return true;
-                       case 5: v(select_id_New_eNB_UE_X2AP_ID_Extension()); return true;
-                       case 6: v(select_id_SgNB_UE_X2AP_ID()); return true;
-                       case 7: if(type != 7) {clear(); asn::base::set();} type = 7; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<E_RABs_SubjectToStatusTransfer_List>()); return true;
-                       case 4: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 5: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 6: v(var.as<SgNB_UE_X2AP_ID>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(E_RABs_SubjectToStatusTransfer_List)];
-                       char dummy2[sizeof(SgNB_UE_X2AP_ID)];
-                       char dummy3[sizeof(UE_X2AP_ID)];
-                       char dummy4[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 7; }
-               void clear() {type = 0;}
-               void select_id_Old_eNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_New_eNB_UE_X2AP_ID() { set(mandatory); type=2;}
-               void select_id_E_RABs_SubjectToStatusTransfer_List() { set(mandatory); type=3;}
-               void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(optional); type=4;}
-               void select_id_New_eNB_UE_X2AP_ID_Extension() { set(optional); type=5;}
-               void select_id_SgNB_UE_X2AP_ID() { set(optional); type=6;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else if(equal(optional)) { type = 6; return true; }
-                       else { type = 7; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 7: type = 7; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-SNStatusTransfer ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{SNStatusTransfer-IEs}},
-       ...
-}
-*/
-
-struct SNStatusTransfer : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "SNStatusTransfer";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<SNStatusTransfer_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<SNStatusTransfer_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-SeNBAdditionRequest-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-MeNB-UE-X2AP-ID                                 CRITICALITY reject      TYPE UE-X2AP-ID                                                 PRESENCE mandatory}|
-       { ID id-UE-SecurityCapabilities                 CRITICALITY reject      TYPE UESecurityCapabilities                             PRESENCE conditional}|
-       -- This IE shall be present if the Bearer Option IE is set to the value “SCG bearer” --
-       { ID id-SeNBSecurityKey                                 CRITICALITY reject      TYPE SeNBSecurityKey                                    PRESENCE conditional}|
-       -- This IE shall be present if the Bearer Option IE is set to the value “SCG bearer” --
-       { ID id-SeNBUEAggregateMaximumBitRate   CRITICALITY reject      TYPE UEAggregateMaximumBitRate                  PRESENCE mandatory}|
-       { ID id-ServingPLMN                                             CRITICALITY ignore      TYPE PLMN-Identity                                              PRESENCE optional}|
-       { ID id-E-RABs-ToBeAdded-List                   CRITICALITY reject      TYPE E-RABs-ToBeAdded-List                              PRESENCE mandatory}|
-       { ID id-MeNBtoSeNBContainer                             CRITICALITY reject      TYPE MeNBtoSeNBContainer                                PRESENCE mandatory}|
-       { ID id-CSGMembershipStatus                             CRITICALITY reject      TYPE CSGMembershipStatus                                PRESENCE optional}|
-       { ID id-SeNB-UE-X2AP-ID                                 CRITICALITY reject      TYPE UE-X2AP-ID                                                 PRESENCE optional}|
-       { ID id-SeNB-UE-X2AP-ID-Extension               CRITICALITY reject      TYPE UE-X2AP-ID-Extension                               PRESENCE optional}|
-       { ID id-ExpectedUEBehaviour                             CRITICALITY ignore      TYPE ExpectedUEBehaviour                                PRESENCE optional}|
-       { ID id-MeNB-UE-X2AP-ID-Extension               CRITICALITY reject      TYPE UE-X2AP-ID-Extension                               PRESENCE optional},
-       ...
-}
-*/
-
-struct SeNBAdditionRequest_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 13; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;}
-               void select_id_UE_SecurityCapabilities() { set(id_UE_SecurityCapabilities); type=2;}
-               void select_id_SeNBSecurityKey() { set(id_SeNBSecurityKey); type=3;}
-               void select_id_SeNBUEAggregateMaximumBitRate() { set(id_SeNBUEAggregateMaximumBitRate); type=4;}
-               void select_id_ServingPLMN() { set(id_ServingPLMN); type=5;}
-               void select_id_E_RABs_ToBeAdded_List() { set(id_E_RABs_ToBeAdded_List); type=6;}
-               void select_id_MeNBtoSeNBContainer() { set(id_MeNBtoSeNBContainer); type=7;}
-               void select_id_CSGMembershipStatus() { set(id_CSGMembershipStatus); type=8;}
-               void select_id_SeNB_UE_X2AP_ID() { set(id_SeNB_UE_X2AP_ID); type=9;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(id_SeNB_UE_X2AP_ID_Extension); type=10;}
-               void select_id_ExpectedUEBehaviour() { set(id_ExpectedUEBehaviour); type=11;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=12;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_UE_SecurityCapabilities)) { type = 2; return true; }
-                       else if(equal(id_SeNBSecurityKey)) { type = 3; return true; }
-                       else if(equal(id_SeNBUEAggregateMaximumBitRate)) { type = 4; return true; }
-                       else if(equal(id_ServingPLMN)) { type = 5; return true; }
-                       else if(equal(id_E_RABs_ToBeAdded_List)) { type = 6; return true; }
-                       else if(equal(id_MeNBtoSeNBContainer)) { type = 7; return true; }
-                       else if(equal(id_CSGMembershipStatus)) { type = 8; return true; }
-                       else if(equal(id_SeNB_UE_X2AP_ID)) { type = 9; return true; }
-                       else if(equal(id_SeNB_UE_X2AP_ID_Extension)) { type = 10; return true; }
-                       else if(equal(id_ExpectedUEBehaviour)) { type = 11; return true; }
-                       else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 12; return true; }
-                       else { type = 13; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_UE_SecurityCapabilities);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_SeNBSecurityKey);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_SeNBUEAggregateMaximumBitRate);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_ServingPLMN);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(id_E_RABs_ToBeAdded_List);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(id_MeNBtoSeNBContainer);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(id_CSGMembershipStatus);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID_Extension);} return false;
-                       case 11: type = 11; if(v(ref_nested())) { return equal(id_ExpectedUEBehaviour);} return false;
-                       case 12: type = 12; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false;
-                       case 13: type = 13; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 13; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;}
-               void select_id_UE_SecurityCapabilities() { set(reject); type=2;}
-               void select_id_SeNBSecurityKey() { set(reject); type=3;}
-               void select_id_SeNBUEAggregateMaximumBitRate() { set(reject); type=4;}
-               void select_id_ServingPLMN() { set(ignore); type=5;}
-               void select_id_E_RABs_ToBeAdded_List() { set(reject); type=6;}
-               void select_id_MeNBtoSeNBContainer() { set(reject); type=7;}
-               void select_id_CSGMembershipStatus() { set(reject); type=8;}
-               void select_id_SeNB_UE_X2AP_ID() { set(reject); type=9;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(reject); type=10;}
-               void select_id_ExpectedUEBehaviour() { set(ignore); type=11;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=12;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(reject)) { type = 3; return true; }
-                       else if(equal(reject)) { type = 4; return true; }
-                       else if(equal(ignore)) { type = 5; return true; }
-                       else if(equal(reject)) { type = 6; return true; }
-                       else if(equal(reject)) { type = 7; return true; }
-                       else if(equal(reject)) { type = 8; return true; }
-                       else if(equal(reject)) { type = 9; return true; }
-                       else if(equal(reject)) { type = 10; return true; }
-                       else if(equal(ignore)) { type = 11; return true; }
-                       else if(equal(reject)) { type = 12; return true; }
-                       else { type = 13; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 11: type = 11; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 12: type = 12; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 13: type = 13; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               UESecurityCapabilities& select_id_UE_SecurityCapabilities() { return set<UESecurityCapabilities>(2); }
-               UESecurityCapabilities const* get_id_UE_SecurityCapabilities() const { return get<UESecurityCapabilities>(2); }
-               SeNBSecurityKey& select_id_SeNBSecurityKey() { return set<SeNBSecurityKey>(3); }
-               SeNBSecurityKey const* get_id_SeNBSecurityKey() const { return get<SeNBSecurityKey>(3); }
-               UEAggregateMaximumBitRate& select_id_SeNBUEAggregateMaximumBitRate() { return set<UEAggregateMaximumBitRate>(4); }
-               UEAggregateMaximumBitRate const* get_id_SeNBUEAggregateMaximumBitRate() const { return get<UEAggregateMaximumBitRate>(4); }
-               PLMN_Identity& select_id_ServingPLMN() { return set<PLMN_Identity>(5); }
-               PLMN_Identity const* get_id_ServingPLMN() const { return get<PLMN_Identity>(5); }
-               E_RABs_ToBeAdded_List& select_id_E_RABs_ToBeAdded_List() { return set<E_RABs_ToBeAdded_List>(6); }
-               E_RABs_ToBeAdded_List const* get_id_E_RABs_ToBeAdded_List() const { return get<E_RABs_ToBeAdded_List>(6); }
-               MeNBtoSeNBContainer& select_id_MeNBtoSeNBContainer() { return set<MeNBtoSeNBContainer>(7); }
-               MeNBtoSeNBContainer const* get_id_MeNBtoSeNBContainer() const { return get<MeNBtoSeNBContainer>(7); }
-               CSGMembershipStatus& select_id_CSGMembershipStatus() { return set<CSGMembershipStatus>(8); }
-               CSGMembershipStatus const* get_id_CSGMembershipStatus() const { return get<CSGMembershipStatus>(8); }
-               UE_X2AP_ID& select_id_SeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(9); }
-               UE_X2AP_ID const* get_id_SeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(9); }
-               UE_X2AP_ID_Extension& select_id_SeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(10); }
-               UE_X2AP_ID_Extension const* get_id_SeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(10); }
-               ExpectedUEBehaviour& select_id_ExpectedUEBehaviour() { return set<ExpectedUEBehaviour>(11); }
-               ExpectedUEBehaviour const* get_id_ExpectedUEBehaviour() const { return get<ExpectedUEBehaviour>(11); }
-               UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(12); }
-               UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(12); }
-               bool is_unknown() const { return type == 13; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<UESecurityCapabilities>(); break;
-                       case 3: var.destroy<SeNBSecurityKey>(); break;
-                       case 4: var.destroy<UEAggregateMaximumBitRate>(); break;
-                       case 5: var.destroy<PLMN_Identity>(); break;
-                       case 6: var.destroy<E_RABs_ToBeAdded_List>(); break;
-                       case 7: var.destroy<MeNBtoSeNBContainer>(); break;
-                       case 8: var.destroy<CSGMembershipStatus>(); break;
-                       case 9: var.destroy<UE_X2AP_ID>(); break;
-                       case 10: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 11: var.destroy<ExpectedUEBehaviour>(); break;
-                       case 12: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<UESecurityCapabilities>(2);
-                       v.template operator()<SeNBSecurityKey>(3);
-                       v.template operator()<UEAggregateMaximumBitRate>(4);
-                       v.template operator()<PLMN_Identity>(5);
-                       v.template operator()<E_RABs_ToBeAdded_List>(6);
-                       v.template operator()<MeNBtoSeNBContainer>(7);
-                       v.template operator()<CSGMembershipStatus>(8);
-                       v.template operator()<UE_X2AP_ID>(9);
-                       v.template operator()<UE_X2AP_ID_Extension>(10);
-                       v.template operator()<ExpectedUEBehaviour>(11);
-                       v.template operator()<UE_X2AP_ID_Extension>(12);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_MeNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_UE_SecurityCapabilities()); return true;
-                       case 3: v(select_id_SeNBSecurityKey()); return true;
-                       case 4: v(select_id_SeNBUEAggregateMaximumBitRate()); return true;
-                       case 5: v(select_id_ServingPLMN()); return true;
-                       case 6: v(select_id_E_RABs_ToBeAdded_List()); return true;
-                       case 7: v(select_id_MeNBtoSeNBContainer()); return true;
-                       case 8: v(select_id_CSGMembershipStatus()); return true;
-                       case 9: v(select_id_SeNB_UE_X2AP_ID()); return true;
-                       case 10: v(select_id_SeNB_UE_X2AP_ID_Extension()); return true;
-                       case 11: v(select_id_ExpectedUEBehaviour()); return true;
-                       case 12: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true;
-                       case 13: if(type != 13) {clear(); asn::base::set();} type = 13; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<UESecurityCapabilities>()); return true;
-                       case 3: v(var.as<SeNBSecurityKey>()); return true;
-                       case 4: v(var.as<UEAggregateMaximumBitRate>()); return true;
-                       case 5: v(var.as<PLMN_Identity>()); return true;
-                       case 6: v(var.as<E_RABs_ToBeAdded_List>()); return true;
-                       case 7: v(var.as<MeNBtoSeNBContainer>()); return true;
-                       case 8: v(var.as<CSGMembershipStatus>()); return true;
-                       case 9: v(var.as<UE_X2AP_ID>()); return true;
-                       case 10: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 11: v(var.as<ExpectedUEBehaviour>()); return true;
-                       case 12: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(CSGMembershipStatus)];
-                       char dummy2[sizeof(E_RABs_ToBeAdded_List)];
-                       char dummy3[sizeof(ExpectedUEBehaviour)];
-                       char dummy4[sizeof(MeNBtoSeNBContainer)];
-                       char dummy5[sizeof(PLMN_Identity)];
-                       char dummy6[sizeof(SeNBSecurityKey)];
-                       char dummy7[sizeof(UEAggregateMaximumBitRate)];
-                       char dummy8[sizeof(UESecurityCapabilities)];
-                       char dummy9[sizeof(UE_X2AP_ID)];
-                       char dummy10[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 13; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_UE_SecurityCapabilities() { set(conditional); type=2;}
-               void select_id_SeNBSecurityKey() { set(conditional); type=3;}
-               void select_id_SeNBUEAggregateMaximumBitRate() { set(mandatory); type=4;}
-               void select_id_ServingPLMN() { set(optional); type=5;}
-               void select_id_E_RABs_ToBeAdded_List() { set(mandatory); type=6;}
-               void select_id_MeNBtoSeNBContainer() { set(mandatory); type=7;}
-               void select_id_CSGMembershipStatus() { set(optional); type=8;}
-               void select_id_SeNB_UE_X2AP_ID() { set(optional); type=9;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(optional); type=10;}
-               void select_id_ExpectedUEBehaviour() { set(optional); type=11;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=12;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(conditional)) { type = 2; return true; }
-                       else if(equal(conditional)) { type = 3; return true; }
-                       else if(equal(mandatory)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else if(equal(mandatory)) { type = 6; return true; }
-                       else if(equal(mandatory)) { type = 7; return true; }
-                       else if(equal(optional)) { type = 8; return true; }
-                       else if(equal(optional)) { type = 9; return true; }
-                       else if(equal(optional)) { type = 10; return true; }
-                       else if(equal(optional)) { type = 11; return true; }
-                       else if(equal(optional)) { type = 12; return true; }
-                       else { type = 13; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(conditional);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(conditional);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 11: type = 11; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 12: type = 12; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 13: type = 13; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-SeNBAdditionRequest ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{SeNBAdditionRequest-IEs}},
-       ...
-}
-*/
-
-struct SeNBAdditionRequest : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "SeNBAdditionRequest";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<SeNBAdditionRequest_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<SeNBAdditionRequest_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-SeNBAdditionRequestAcknowledge-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-MeNB-UE-X2AP-ID                                         CRITICALITY reject      TYPE UE-X2AP-ID                                                 PRESENCE mandatory}|
-       { ID id-SeNB-UE-X2AP-ID                                         CRITICALITY reject      TYPE UE-X2AP-ID                                                 PRESENCE mandatory}|
-       { ID id-E-RABs-Admitted-ToBeAdded-List          CRITICALITY ignore      TYPE E-RABs-Admitted-ToBeAdded-List     PRESENCE mandatory}|
-       { ID id-E-RABs-NotAdmitted-List                         CRITICALITY ignore      TYPE E-RAB-List                                                 PRESENCE optional}|
-       { ID id-SeNBtoMeNBContainer                                     CRITICALITY reject      TYPE SeNBtoMeNBContainer                                PRESENCE mandatory}|
-       { ID id-CriticalityDiagnostics                          CRITICALITY ignore      TYPE CriticalityDiagnostics                             PRESENCE optional}|
-       { ID id-GW-TransportLayerAddress                        CRITICALITY ignore      TYPE TransportLayerAddress                              PRESENCE optional}|
-       { ID id-SIPTO-L-GW-TransportLayerAddress        CRITICALITY ignore      TYPE TransportLayerAddress                              PRESENCE optional}|
-       { ID id-MeNB-UE-X2AP-ID-Extension                       CRITICALITY reject      TYPE UE-X2AP-ID-Extension                               PRESENCE optional}|
-       { ID id-SeNB-UE-X2AP-ID-Extension                       CRITICALITY reject      TYPE UE-X2AP-ID-Extension                               PRESENCE optional}|
-       { ID id-Tunnel-Information-for-BBF                      CRITICALITY ignore      TYPE TunnelInformation                                  PRESENCE optional},
-       ...
-}
-*/
-
-struct SeNBAdditionRequestAcknowledge_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 12; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(id_SeNB_UE_X2AP_ID); type=2;}
-               void select_id_E_RABs_Admitted_ToBeAdded_List() { set(id_E_RABs_Admitted_ToBeAdded_List); type=3;}
-               void select_id_E_RABs_NotAdmitted_List() { set(id_E_RABs_NotAdmitted_List); type=4;}
-               void select_id_SeNBtoMeNBContainer() { set(id_SeNBtoMeNBContainer); type=5;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=6;}
-               void select_id_GW_TransportLayerAddress() { set(id_GW_TransportLayerAddress); type=7;}
-               void select_id_SIPTO_L_GW_TransportLayerAddress() { set(id_SIPTO_L_GW_TransportLayerAddress); type=8;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=9;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(id_SeNB_UE_X2AP_ID_Extension); type=10;}
-               void select_id_Tunnel_Information_for_BBF() { set(id_Tunnel_Information_for_BBF); type=11;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_SeNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_E_RABs_Admitted_ToBeAdded_List)) { type = 3; return true; }
-                       else if(equal(id_E_RABs_NotAdmitted_List)) { type = 4; return true; }
-                       else if(equal(id_SeNBtoMeNBContainer)) { type = 5; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 6; return true; }
-                       else if(equal(id_GW_TransportLayerAddress)) { type = 7; return true; }
-                       else if(equal(id_SIPTO_L_GW_TransportLayerAddress)) { type = 8; return true; }
-                       else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 9; return true; }
-                       else if(equal(id_SeNB_UE_X2AP_ID_Extension)) { type = 10; return true; }
-                       else if(equal(id_Tunnel_Information_for_BBF)) { type = 11; return true; }
-                       else { type = 12; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_E_RABs_Admitted_ToBeAdded_List);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_E_RABs_NotAdmitted_List);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_SeNBtoMeNBContainer);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(id_GW_TransportLayerAddress);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(id_SIPTO_L_GW_TransportLayerAddress);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID_Extension);} return false;
-                       case 11: type = 11; if(v(ref_nested())) { return equal(id_Tunnel_Information_for_BBF);} return false;
-                       case 12: type = 12; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 12; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(reject); type=2;}
-               void select_id_E_RABs_Admitted_ToBeAdded_List() { set(ignore); type=3;}
-               void select_id_E_RABs_NotAdmitted_List() { set(ignore); type=4;}
-               void select_id_SeNBtoMeNBContainer() { set(reject); type=5;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=6;}
-               void select_id_GW_TransportLayerAddress() { set(ignore); type=7;}
-               void select_id_SIPTO_L_GW_TransportLayerAddress() { set(ignore); type=8;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=9;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(reject); type=10;}
-               void select_id_Tunnel_Information_for_BBF() { set(ignore); type=11;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else if(equal(reject)) { type = 5; return true; }
-                       else if(equal(ignore)) { type = 6; return true; }
-                       else if(equal(ignore)) { type = 7; return true; }
-                       else if(equal(ignore)) { type = 8; return true; }
-                       else if(equal(reject)) { type = 9; return true; }
-                       else if(equal(reject)) { type = 10; return true; }
-                       else if(equal(ignore)) { type = 11; return true; }
-                       else { type = 12; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 11: type = 11; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 12: type = 12; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               UE_X2AP_ID& select_id_SeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(2); }
-               UE_X2AP_ID const* get_id_SeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(2); }
-               E_RABs_Admitted_ToBeAdded_List& select_id_E_RABs_Admitted_ToBeAdded_List() { return set<E_RABs_Admitted_ToBeAdded_List>(3); }
-               E_RABs_Admitted_ToBeAdded_List const* get_id_E_RABs_Admitted_ToBeAdded_List() const { return get<E_RABs_Admitted_ToBeAdded_List>(3); }
-               E_RAB_List& select_id_E_RABs_NotAdmitted_List() { return set<E_RAB_List>(4); }
-               E_RAB_List const* get_id_E_RABs_NotAdmitted_List() const { return get<E_RAB_List>(4); }
-               SeNBtoMeNBContainer& select_id_SeNBtoMeNBContainer() { return set<SeNBtoMeNBContainer>(5); }
-               SeNBtoMeNBContainer const* get_id_SeNBtoMeNBContainer() const { return get<SeNBtoMeNBContainer>(5); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(6); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(6); }
-               TransportLayerAddress& select_id_GW_TransportLayerAddress() { return set<TransportLayerAddress>(7); }
-               TransportLayerAddress const* get_id_GW_TransportLayerAddress() const { return get<TransportLayerAddress>(7); }
-               TransportLayerAddress& select_id_SIPTO_L_GW_TransportLayerAddress() { return set<TransportLayerAddress>(8); }
-               TransportLayerAddress const* get_id_SIPTO_L_GW_TransportLayerAddress() const { return get<TransportLayerAddress>(8); }
-               UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(9); }
-               UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(9); }
-               UE_X2AP_ID_Extension& select_id_SeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(10); }
-               UE_X2AP_ID_Extension const* get_id_SeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(10); }
-               TunnelInformation& select_id_Tunnel_Information_for_BBF() { return set<TunnelInformation>(11); }
-               TunnelInformation const* get_id_Tunnel_Information_for_BBF() const { return get<TunnelInformation>(11); }
-               bool is_unknown() const { return type == 12; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<UE_X2AP_ID>(); break;
-                       case 3: var.destroy<E_RABs_Admitted_ToBeAdded_List>(); break;
-                       case 4: var.destroy<E_RAB_List>(); break;
-                       case 5: var.destroy<SeNBtoMeNBContainer>(); break;
-                       case 6: var.destroy<CriticalityDiagnostics>(); break;
-                       case 7: var.destroy<TransportLayerAddress>(); break;
-                       case 8: var.destroy<TransportLayerAddress>(); break;
-                       case 9: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 10: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 11: var.destroy<TunnelInformation>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<UE_X2AP_ID>(2);
-                       v.template operator()<E_RABs_Admitted_ToBeAdded_List>(3);
-                       v.template operator()<E_RAB_List>(4);
-                       v.template operator()<SeNBtoMeNBContainer>(5);
-                       v.template operator()<CriticalityDiagnostics>(6);
-                       v.template operator()<TransportLayerAddress>(7);
-                       v.template operator()<TransportLayerAddress>(8);
-                       v.template operator()<UE_X2AP_ID_Extension>(9);
-                       v.template operator()<UE_X2AP_ID_Extension>(10);
-                       v.template operator()<TunnelInformation>(11);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_MeNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_SeNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_E_RABs_Admitted_ToBeAdded_List()); return true;
-                       case 4: v(select_id_E_RABs_NotAdmitted_List()); return true;
-                       case 5: v(select_id_SeNBtoMeNBContainer()); return true;
-                       case 6: v(select_id_CriticalityDiagnostics()); return true;
-                       case 7: v(select_id_GW_TransportLayerAddress()); return true;
-                       case 8: v(select_id_SIPTO_L_GW_TransportLayerAddress()); return true;
-                       case 9: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true;
-                       case 10: v(select_id_SeNB_UE_X2AP_ID_Extension()); return true;
-                       case 11: v(select_id_Tunnel_Information_for_BBF()); return true;
-                       case 12: if(type != 12) {clear(); asn::base::set();} type = 12; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<E_RABs_Admitted_ToBeAdded_List>()); return true;
-                       case 4: v(var.as<E_RAB_List>()); return true;
-                       case 5: v(var.as<SeNBtoMeNBContainer>()); return true;
-                       case 6: v(var.as<CriticalityDiagnostics>()); return true;
-                       case 7: v(var.as<TransportLayerAddress>()); return true;
-                       case 8: v(var.as<TransportLayerAddress>()); return true;
-                       case 9: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 10: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 11: v(var.as<TunnelInformation>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(CriticalityDiagnostics)];
-                       char dummy2[sizeof(E_RAB_List)];
-                       char dummy3[sizeof(E_RABs_Admitted_ToBeAdded_List)];
-                       char dummy4[sizeof(SeNBtoMeNBContainer)];
-                       char dummy5[sizeof(TransportLayerAddress)];
-                       char dummy6[sizeof(TunnelInformation)];
-                       char dummy7[sizeof(UE_X2AP_ID)];
-                       char dummy8[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 12; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(mandatory); type=2;}
-               void select_id_E_RABs_Admitted_ToBeAdded_List() { set(mandatory); type=3;}
-               void select_id_E_RABs_NotAdmitted_List() { set(optional); type=4;}
-               void select_id_SeNBtoMeNBContainer() { set(mandatory); type=5;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=6;}
-               void select_id_GW_TransportLayerAddress() { set(optional); type=7;}
-               void select_id_SIPTO_L_GW_TransportLayerAddress() { set(optional); type=8;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=9;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(optional); type=10;}
-               void select_id_Tunnel_Information_for_BBF() { set(optional); type=11;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(mandatory)) { type = 5; return true; }
-                       else if(equal(optional)) { type = 6; return true; }
-                       else if(equal(optional)) { type = 7; return true; }
-                       else if(equal(optional)) { type = 8; return true; }
-                       else if(equal(optional)) { type = 9; return true; }
-                       else if(equal(optional)) { type = 10; return true; }
-                       else if(equal(optional)) { type = 11; return true; }
-                       else { type = 12; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 11: type = 11; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 12: type = 12; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-SeNBAdditionRequestAcknowledge ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{SeNBAdditionRequestAcknowledge-IEs}},
-       ...
-}
-*/
-
-struct SeNBAdditionRequestAcknowledge : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "SeNBAdditionRequestAcknowledge";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<SeNBAdditionRequestAcknowledge_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<SeNBAdditionRequestAcknowledge_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-SeNBAdditionRequestReject-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-MeNB-UE-X2AP-ID                                 CRITICALITY reject      TYPE UE-X2AP-ID                                 PRESENCE mandatory}|
-       { ID id-SeNB-UE-X2AP-ID                                 CRITICALITY reject      TYPE UE-X2AP-ID                                 PRESENCE mandatory}|
-       { ID id-Cause                                                   CRITICALITY ignore      TYPE Cause                                              PRESENCE mandatory}|
-       { ID id-CriticalityDiagnostics                  CRITICALITY ignore      TYPE CriticalityDiagnostics             PRESENCE optional}|
-       { ID id-MeNB-UE-X2AP-ID-Extension               CRITICALITY reject      TYPE UE-X2AP-ID-Extension               PRESENCE optional}|
-       { ID id-SeNB-UE-X2AP-ID-Extension               CRITICALITY reject      TYPE UE-X2AP-ID-Extension               PRESENCE optional},
-       ...
-}
-*/
-
-struct SeNBAdditionRequestReject_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 7; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(id_SeNB_UE_X2AP_ID); type=2;}
-               void select_id_Cause() { set(id_Cause); type=3;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=4;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=5;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(id_SeNB_UE_X2AP_ID_Extension); type=6;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_SeNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_Cause)) { type = 3; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 4; return true; }
-                       else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 5; return true; }
-                       else if(equal(id_SeNB_UE_X2AP_ID_Extension)) { type = 6; return true; }
-                       else { type = 7; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID_Extension);} return false;
-                       case 7: type = 7; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 7; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(reject); type=2;}
-               void select_id_Cause() { set(ignore); type=3;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=4;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=5;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(reject); type=6;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else if(equal(reject)) { type = 5; return true; }
-                       else if(equal(reject)) { type = 6; return true; }
-                       else { type = 7; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 7: type = 7; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               UE_X2AP_ID& select_id_SeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(2); }
-               UE_X2AP_ID const* get_id_SeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(2); }
-               Cause& select_id_Cause() { return set<Cause>(3); }
-               Cause const* get_id_Cause() const { return get<Cause>(3); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(4); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(4); }
-               UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(5); }
-               UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(5); }
-               UE_X2AP_ID_Extension& select_id_SeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(6); }
-               UE_X2AP_ID_Extension const* get_id_SeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(6); }
-               bool is_unknown() const { return type == 7; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<UE_X2AP_ID>(); break;
-                       case 3: var.destroy<Cause>(); break;
-                       case 4: var.destroy<CriticalityDiagnostics>(); break;
-                       case 5: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 6: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<UE_X2AP_ID>(2);
-                       v.template operator()<Cause>(3);
-                       v.template operator()<CriticalityDiagnostics>(4);
-                       v.template operator()<UE_X2AP_ID_Extension>(5);
-                       v.template operator()<UE_X2AP_ID_Extension>(6);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_MeNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_SeNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_Cause()); return true;
-                       case 4: v(select_id_CriticalityDiagnostics()); return true;
-                       case 5: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true;
-                       case 6: v(select_id_SeNB_UE_X2AP_ID_Extension()); return true;
-                       case 7: if(type != 7) {clear(); asn::base::set();} type = 7; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<Cause>()); return true;
-                       case 4: v(var.as<CriticalityDiagnostics>()); return true;
-                       case 5: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 6: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(Cause)];
-                       char dummy2[sizeof(CriticalityDiagnostics)];
-                       char dummy3[sizeof(UE_X2AP_ID)];
-                       char dummy4[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 7; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(mandatory); type=2;}
-               void select_id_Cause() { set(mandatory); type=3;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=4;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=5;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(optional); type=6;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else if(equal(optional)) { type = 6; return true; }
-                       else { type = 7; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 7: type = 7; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-SeNBAdditionRequestReject ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{SeNBAdditionRequestReject-IEs}},
-       ...
-}
-*/
-
-struct SeNBAdditionRequestReject : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "SeNBAdditionRequestReject";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<SeNBAdditionRequestReject_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<SeNBAdditionRequestReject_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-SeNBCounterCheckRequest-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-MeNB-UE-X2AP-ID                                         CRITICALITY reject      TYPE UE-X2AP-ID                                                                 PRESENCE mandatory}|
-       { ID id-SeNB-UE-X2AP-ID                                         CRITICALITY reject      TYPE UE-X2AP-ID                                                                 PRESENCE mandatory}|
-       { ID id-E-RABs-SubjectToCounterCheck-List       CRITICALITY ignore      TYPE E-RABs-SubjectToCounterCheck-List          PRESENCE mandatory}|
-       { ID id-MeNB-UE-X2AP-ID-Extension                       CRITICALITY ignore      TYPE UE-X2AP-ID-Extension                                               PRESENCE optional}|
-       { ID id-SeNB-UE-X2AP-ID-Extension                       CRITICALITY ignore      TYPE UE-X2AP-ID-Extension                                               PRESENCE optional},
-       ...
-}
-*/
-
-struct SeNBCounterCheckRequest_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(id_SeNB_UE_X2AP_ID); type=2;}
-               void select_id_E_RABs_SubjectToCounterCheck_List() { set(id_E_RABs_SubjectToCounterCheck_List); type=3;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=4;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(id_SeNB_UE_X2AP_ID_Extension); type=5;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_SeNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_E_RABs_SubjectToCounterCheck_List)) { type = 3; return true; }
-                       else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 4; return true; }
-                       else if(equal(id_SeNB_UE_X2AP_ID_Extension)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_E_RABs_SubjectToCounterCheck_List);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID_Extension);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(reject); type=2;}
-               void select_id_E_RABs_SubjectToCounterCheck_List() { set(ignore); type=3;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(ignore); type=4;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(ignore); type=5;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else if(equal(ignore)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               UE_X2AP_ID& select_id_SeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(2); }
-               UE_X2AP_ID const* get_id_SeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(2); }
-               E_RABs_SubjectToCounterCheck_List& select_id_E_RABs_SubjectToCounterCheck_List() { return set<E_RABs_SubjectToCounterCheck_List>(3); }
-               E_RABs_SubjectToCounterCheck_List const* get_id_E_RABs_SubjectToCounterCheck_List() const { return get<E_RABs_SubjectToCounterCheck_List>(3); }
-               UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(4); }
-               UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(4); }
-               UE_X2AP_ID_Extension& select_id_SeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(5); }
-               UE_X2AP_ID_Extension const* get_id_SeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(5); }
-               bool is_unknown() const { return type == 6; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<UE_X2AP_ID>(); break;
-                       case 3: var.destroy<E_RABs_SubjectToCounterCheck_List>(); break;
-                       case 4: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 5: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<UE_X2AP_ID>(2);
-                       v.template operator()<E_RABs_SubjectToCounterCheck_List>(3);
-                       v.template operator()<UE_X2AP_ID_Extension>(4);
-                       v.template operator()<UE_X2AP_ID_Extension>(5);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_MeNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_SeNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_E_RABs_SubjectToCounterCheck_List()); return true;
-                       case 4: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true;
-                       case 5: v(select_id_SeNB_UE_X2AP_ID_Extension()); return true;
-                       case 6: if(type != 6) {clear(); asn::base::set();} type = 6; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<E_RABs_SubjectToCounterCheck_List>()); return true;
-                       case 4: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 5: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(E_RABs_SubjectToCounterCheck_List)];
-                       char dummy2[sizeof(UE_X2AP_ID)];
-                       char dummy3[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(mandatory); type=2;}
-               void select_id_E_RABs_SubjectToCounterCheck_List() { set(mandatory); type=3;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=4;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(optional); type=5;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-SeNBCounterCheckRequest ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{SeNBCounterCheckRequest-IEs}},
-       ...
-}
-*/
-
-struct SeNBCounterCheckRequest : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "SeNBCounterCheckRequest";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<SeNBCounterCheckRequest_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<SeNBCounterCheckRequest_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-SeNBModificationConfirm-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-MeNB-UE-X2AP-ID                                         CRITICALITY ignore      TYPE UE-X2AP-ID                                         PRESENCE mandatory}|
-       { ID id-SeNB-UE-X2AP-ID                                         CRITICALITY ignore      TYPE UE-X2AP-ID                                         PRESENCE mandatory}|
-       { ID id-MeNBtoSeNBContainer                                     CRITICALITY ignore      TYPE MeNBtoSeNBContainer                        PRESENCE optional}|
-       { ID id-CriticalityDiagnostics                          CRITICALITY ignore      TYPE CriticalityDiagnostics                     PRESENCE optional}|
-       { ID id-MeNB-UE-X2AP-ID-Extension                       CRITICALITY ignore      TYPE UE-X2AP-ID-Extension                       PRESENCE optional}|
-       { ID id-SeNB-UE-X2AP-ID-Extension                       CRITICALITY ignore      TYPE UE-X2AP-ID-Extension                       PRESENCE optional},
-       ...
-}
-*/
-
-struct SeNBModificationConfirm_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 7; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(id_SeNB_UE_X2AP_ID); type=2;}
-               void select_id_MeNBtoSeNBContainer() { set(id_MeNBtoSeNBContainer); type=3;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=4;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=5;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(id_SeNB_UE_X2AP_ID_Extension); type=6;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_SeNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_MeNBtoSeNBContainer)) { type = 3; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 4; return true; }
-                       else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 5; return true; }
-                       else if(equal(id_SeNB_UE_X2AP_ID_Extension)) { type = 6; return true; }
-                       else { type = 7; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_MeNBtoSeNBContainer);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID_Extension);} return false;
-                       case 7: type = 7; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 7; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(ignore); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(ignore); type=2;}
-               void select_id_MeNBtoSeNBContainer() { set(ignore); type=3;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=4;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(ignore); type=5;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(ignore); type=6;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else if(equal(ignore)) { type = 5; return true; }
-                       else if(equal(ignore)) { type = 6; return true; }
-                       else { type = 7; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 7: type = 7; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               UE_X2AP_ID& select_id_SeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(2); }
-               UE_X2AP_ID const* get_id_SeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(2); }
-               MeNBtoSeNBContainer& select_id_MeNBtoSeNBContainer() { return set<MeNBtoSeNBContainer>(3); }
-               MeNBtoSeNBContainer const* get_id_MeNBtoSeNBContainer() const { return get<MeNBtoSeNBContainer>(3); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(4); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(4); }
-               UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(5); }
-               UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(5); }
-               UE_X2AP_ID_Extension& select_id_SeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(6); }
-               UE_X2AP_ID_Extension const* get_id_SeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(6); }
-               bool is_unknown() const { return type == 7; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<UE_X2AP_ID>(); break;
-                       case 3: var.destroy<MeNBtoSeNBContainer>(); break;
-                       case 4: var.destroy<CriticalityDiagnostics>(); break;
-                       case 5: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 6: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<UE_X2AP_ID>(2);
-                       v.template operator()<MeNBtoSeNBContainer>(3);
-                       v.template operator()<CriticalityDiagnostics>(4);
-                       v.template operator()<UE_X2AP_ID_Extension>(5);
-                       v.template operator()<UE_X2AP_ID_Extension>(6);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_MeNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_SeNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_MeNBtoSeNBContainer()); return true;
-                       case 4: v(select_id_CriticalityDiagnostics()); return true;
-                       case 5: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true;
-                       case 6: v(select_id_SeNB_UE_X2AP_ID_Extension()); return true;
-                       case 7: if(type != 7) {clear(); asn::base::set();} type = 7; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<MeNBtoSeNBContainer>()); return true;
-                       case 4: v(var.as<CriticalityDiagnostics>()); return true;
-                       case 5: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 6: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(CriticalityDiagnostics)];
-                       char dummy2[sizeof(MeNBtoSeNBContainer)];
-                       char dummy3[sizeof(UE_X2AP_ID)];
-                       char dummy4[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 7; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(mandatory); type=2;}
-               void select_id_MeNBtoSeNBContainer() { set(optional); type=3;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=4;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=5;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(optional); type=6;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(optional)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else if(equal(optional)) { type = 6; return true; }
-                       else { type = 7; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 7: type = 7; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-SeNBModificationConfirm ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{SeNBModificationConfirm-IEs}},
-       ...
-}
-*/
-
-struct SeNBModificationConfirm : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "SeNBModificationConfirm";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<SeNBModificationConfirm_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<SeNBModificationConfirm_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-SeNBModificationRefuse-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-MeNB-UE-X2AP-ID                                         CRITICALITY ignore      TYPE UE-X2AP-ID                                 PRESENCE mandatory}|
-       { ID id-SeNB-UE-X2AP-ID                                         CRITICALITY ignore      TYPE UE-X2AP-ID                                 PRESENCE mandatory}|
-       { ID id-Cause                                                           CRITICALITY ignore      TYPE Cause                                              PRESENCE mandatory}|
-       { ID id-MeNBtoSeNBContainer                                     CRITICALITY ignore      TYPE MeNBtoSeNBContainer                PRESENCE optional}|
-       { ID id-CriticalityDiagnostics                          CRITICALITY ignore      TYPE CriticalityDiagnostics             PRESENCE optional}|
-       { ID id-MeNB-UE-X2AP-ID-Extension                       CRITICALITY ignore      TYPE UE-X2AP-ID-Extension               PRESENCE optional}|
-       { ID id-SeNB-UE-X2AP-ID-Extension                       CRITICALITY ignore      TYPE UE-X2AP-ID-Extension               PRESENCE optional},
-       ...
-}
-*/
-
-struct SeNBModificationRefuse_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 8; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(id_SeNB_UE_X2AP_ID); type=2;}
-               void select_id_Cause() { set(id_Cause); type=3;}
-               void select_id_MeNBtoSeNBContainer() { set(id_MeNBtoSeNBContainer); type=4;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=5;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=6;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(id_SeNB_UE_X2AP_ID_Extension); type=7;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_SeNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_Cause)) { type = 3; return true; }
-                       else if(equal(id_MeNBtoSeNBContainer)) { type = 4; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 5; return true; }
-                       else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 6; return true; }
-                       else if(equal(id_SeNB_UE_X2AP_ID_Extension)) { type = 7; return true; }
-                       else { type = 8; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_MeNBtoSeNBContainer);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID_Extension);} return false;
-                       case 8: type = 8; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 8; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(ignore); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(ignore); type=2;}
-               void select_id_Cause() { set(ignore); type=3;}
-               void select_id_MeNBtoSeNBContainer() { set(ignore); type=4;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=5;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(ignore); type=6;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(ignore); type=7;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else if(equal(ignore)) { type = 5; return true; }
-                       else if(equal(ignore)) { type = 6; return true; }
-                       else if(equal(ignore)) { type = 7; return true; }
-                       else { type = 8; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 8: type = 8; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               UE_X2AP_ID& select_id_SeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(2); }
-               UE_X2AP_ID const* get_id_SeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(2); }
-               Cause& select_id_Cause() { return set<Cause>(3); }
-               Cause const* get_id_Cause() const { return get<Cause>(3); }
-               MeNBtoSeNBContainer& select_id_MeNBtoSeNBContainer() { return set<MeNBtoSeNBContainer>(4); }
-               MeNBtoSeNBContainer const* get_id_MeNBtoSeNBContainer() const { return get<MeNBtoSeNBContainer>(4); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(5); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(5); }
-               UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(6); }
-               UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(6); }
-               UE_X2AP_ID_Extension& select_id_SeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(7); }
-               UE_X2AP_ID_Extension const* get_id_SeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(7); }
-               bool is_unknown() const { return type == 8; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<UE_X2AP_ID>(); break;
-                       case 3: var.destroy<Cause>(); break;
-                       case 4: var.destroy<MeNBtoSeNBContainer>(); break;
-                       case 5: var.destroy<CriticalityDiagnostics>(); break;
-                       case 6: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 7: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<UE_X2AP_ID>(2);
-                       v.template operator()<Cause>(3);
-                       v.template operator()<MeNBtoSeNBContainer>(4);
-                       v.template operator()<CriticalityDiagnostics>(5);
-                       v.template operator()<UE_X2AP_ID_Extension>(6);
-                       v.template operator()<UE_X2AP_ID_Extension>(7);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_MeNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_SeNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_Cause()); return true;
-                       case 4: v(select_id_MeNBtoSeNBContainer()); return true;
-                       case 5: v(select_id_CriticalityDiagnostics()); return true;
-                       case 6: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true;
-                       case 7: v(select_id_SeNB_UE_X2AP_ID_Extension()); return true;
-                       case 8: if(type != 8) {clear(); asn::base::set();} type = 8; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<Cause>()); return true;
-                       case 4: v(var.as<MeNBtoSeNBContainer>()); return true;
-                       case 5: v(var.as<CriticalityDiagnostics>()); return true;
-                       case 6: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 7: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(Cause)];
-                       char dummy2[sizeof(CriticalityDiagnostics)];
-                       char dummy3[sizeof(MeNBtoSeNBContainer)];
-                       char dummy4[sizeof(UE_X2AP_ID)];
-                       char dummy5[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 8; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(mandatory); type=2;}
-               void select_id_Cause() { set(mandatory); type=3;}
-               void select_id_MeNBtoSeNBContainer() { set(optional); type=4;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=5;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=6;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(optional); type=7;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else if(equal(optional)) { type = 6; return true; }
-                       else if(equal(optional)) { type = 7; return true; }
-                       else { type = 8; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 8: type = 8; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-SeNBModificationRefuse ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container            {{SeNBModificationRefuse-IEs}},
-       ...
-}
-*/
-
-struct SeNBModificationRefuse : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "SeNBModificationRefuse";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<SeNBModificationRefuse_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<SeNBModificationRefuse_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-UE-ContextInformationSeNBModReqExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       ...
-}
-*/
-
-struct UE_ContextInformationSeNBModReqExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear()
-               {
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: if(type != 1) {clear(); asn::base::set();} type = 1; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       return false;
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 1; }
-               void clear() {type = 0;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       { type = 1; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-UE-ContextInformationSeNBModReq ::= SEQUENCE {
-       uE-SecurityCapabilities                 UESecurityCapabilities                                                                                                                  OPTIONAL,
-       seNB-SecurityKey                                SeNBSecurityKey                                                                                                                                 OPTIONAL,
-       seNBUEAggregateMaximumBitRate   UEAggregateMaximumBitRate                                                                                                               OPTIONAL,
-       e-RABs-ToBeAdded                                E-RABs-ToBeAdded-List-ModReq                                                                                                    OPTIONAL,
-       e-RABs-ToBeModified                             E-RABs-ToBeModified-List-ModReq                                                                                                 OPTIONAL,
-       e-RABs-ToBeReleased                             E-RABs-ToBeReleased-List-ModReq                                                                                                 OPTIONAL,
-       iE-Extensions                                   ProtocolExtensionContainer { {UE-ContextInformationSeNBModReqExtIEs} }  OPTIONAL,
-       ...
-}
-*/
-
-struct UE_ContextInformationSeNBModReq : asn::sequence<7, 0, true, 7>
-{
-       static constexpr const char* name() {return "UE-ContextInformationSeNBModReq";}
-       using parent_t = asn::sequence<7, 0, true, 7>;
-       struct uE_SecurityCapabilities_t : UESecurityCapabilities
-       {
-               static constexpr const char* name() {return "uE_SecurityCapabilities_t";}
-               using parent_t = UESecurityCapabilities;
-               static constexpr bool optional = true;
-
-       };
-       uE_SecurityCapabilities_t& set_uE_SecurityCapabilities() { uE_SecurityCapabilities.setpresent(true); return uE_SecurityCapabilities;}
-       uE_SecurityCapabilities_t const* get_uE_SecurityCapabilities() const {return uE_SecurityCapabilities.is_valid() ? &uE_SecurityCapabilities : nullptr;}
-       struct seNB_SecurityKey_t : SeNBSecurityKey
-       {
-               static constexpr const char* name() {return "seNB_SecurityKey_t";}
-               using parent_t = SeNBSecurityKey;
-               static constexpr bool optional = true;
-
-       };
-       seNB_SecurityKey_t& set_seNB_SecurityKey() { seNB_SecurityKey.setpresent(true); return seNB_SecurityKey;}
-       seNB_SecurityKey_t const* get_seNB_SecurityKey() const {return seNB_SecurityKey.is_valid() ? &seNB_SecurityKey : nullptr;}
-       struct seNBUEAggregateMaximumBitRate_t : UEAggregateMaximumBitRate
-       {
-               static constexpr const char* name() {return "seNBUEAggregateMaximumBitRate_t";}
-               using parent_t = UEAggregateMaximumBitRate;
-               static constexpr bool optional = true;
-
-       };
-       seNBUEAggregateMaximumBitRate_t& set_seNBUEAggregateMaximumBitRate() { seNBUEAggregateMaximumBitRate.setpresent(true); return seNBUEAggregateMaximumBitRate;}
-       seNBUEAggregateMaximumBitRate_t const* get_seNBUEAggregateMaximumBitRate() const {return seNBUEAggregateMaximumBitRate.is_valid() ? &seNBUEAggregateMaximumBitRate : nullptr;}
-       struct e_RABs_ToBeAdded_t : E_RABs_ToBeAdded_List_ModReq
-       {
-               static constexpr const char* name() {return "e_RABs_ToBeAdded_t";}
-               using parent_t = E_RABs_ToBeAdded_List_ModReq;
-               static constexpr bool optional = true;
-
-       };
-       e_RABs_ToBeAdded_t& set_e_RABs_ToBeAdded() { e_RABs_ToBeAdded.setpresent(true); return e_RABs_ToBeAdded;}
-       e_RABs_ToBeAdded_t const* get_e_RABs_ToBeAdded() const {return e_RABs_ToBeAdded.is_valid() ? &e_RABs_ToBeAdded : nullptr;}
-       struct e_RABs_ToBeModified_t : E_RABs_ToBeModified_List_ModReq
-       {
-               static constexpr const char* name() {return "e_RABs_ToBeModified_t";}
-               using parent_t = E_RABs_ToBeModified_List_ModReq;
-               static constexpr bool optional = true;
-
-       };
-       e_RABs_ToBeModified_t& set_e_RABs_ToBeModified() { e_RABs_ToBeModified.setpresent(true); return e_RABs_ToBeModified;}
-       e_RABs_ToBeModified_t const* get_e_RABs_ToBeModified() const {return e_RABs_ToBeModified.is_valid() ? &e_RABs_ToBeModified : nullptr;}
-       struct e_RABs_ToBeReleased_t : E_RABs_ToBeReleased_List_ModReq
-       {
-               static constexpr const char* name() {return "e_RABs_ToBeReleased_t";}
-               using parent_t = E_RABs_ToBeReleased_List_ModReq;
-               static constexpr bool optional = true;
-
-       };
-       e_RABs_ToBeReleased_t& set_e_RABs_ToBeReleased() { e_RABs_ToBeReleased.setpresent(true); return e_RABs_ToBeReleased;}
-       e_RABs_ToBeReleased_t const* get_e_RABs_ToBeReleased() const {return e_RABs_ToBeReleased.is_valid() ? &e_RABs_ToBeReleased : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<UE_ContextInformationSeNBModReqExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<UE_ContextInformationSeNBModReqExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(uE_SecurityCapabilities);
-               v(seNB_SecurityKey);
-               v(seNBUEAggregateMaximumBitRate);
-               v(e_RABs_ToBeAdded);
-               v(e_RABs_ToBeModified);
-               v(e_RABs_ToBeReleased);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(uE_SecurityCapabilities);
-               v(seNB_SecurityKey);
-               v(seNBUEAggregateMaximumBitRate);
-               v(e_RABs_ToBeAdded);
-               v(e_RABs_ToBeModified);
-               v(e_RABs_ToBeReleased);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               uE_SecurityCapabilities.clear();
-               seNB_SecurityKey.clear();
-               seNBUEAggregateMaximumBitRate.clear();
-               e_RABs_ToBeAdded.clear();
-               e_RABs_ToBeModified.clear();
-               e_RABs_ToBeReleased.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       uE_SecurityCapabilities_t       uE_SecurityCapabilities;
-       seNB_SecurityKey_t      seNB_SecurityKey;
-       seNBUEAggregateMaximumBitRate_t seNBUEAggregateMaximumBitRate;
-       e_RABs_ToBeAdded_t      e_RABs_ToBeAdded;
-       e_RABs_ToBeModified_t   e_RABs_ToBeModified;
-       e_RABs_ToBeReleased_t   e_RABs_ToBeReleased;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-SeNBModificationRequest-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-MeNB-UE-X2AP-ID                                         CRITICALITY reject      TYPE UE-X2AP-ID                                                         PRESENCE mandatory}|
-       { ID id-SeNB-UE-X2AP-ID                                         CRITICALITY reject      TYPE UE-X2AP-ID                                                         PRESENCE mandatory}|
-       { ID id-Cause                                                           CRITICALITY ignore      TYPE Cause                                                                      PRESENCE mandatory}|
-       { ID id-SCGChangeIndication                                     CRITICALITY ignore      TYPE SCGChangeIndication                                        PRESENCE optional}|
-       { ID id-ServingPLMN                                                     CRITICALITY ignore      TYPE PLMN-Identity                                                      PRESENCE optional}|
-       { ID id-UE-ContextInformationSeNBModReq         CRITICALITY reject      TYPE UE-ContextInformationSeNBModReq    PRESENCE optional}|
-       { ID id-MeNBtoSeNBContainer                                     CRITICALITY ignore      TYPE MeNBtoSeNBContainer                                        PRESENCE optional}|
-       { ID id-CSGMembershipStatus                                     CRITICALITY reject      TYPE CSGMembershipStatus                                        PRESENCE optional}|
-       { ID id-MeNB-UE-X2AP-ID-Extension                       CRITICALITY reject      TYPE UE-X2AP-ID-Extension                                       PRESENCE optional}|
-       { ID id-SeNB-UE-X2AP-ID-Extension                       CRITICALITY reject      TYPE UE-X2AP-ID-Extension                                       PRESENCE optional},
-       ...
-}
-*/
-
-struct SeNBModificationRequest_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 11; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(id_SeNB_UE_X2AP_ID); type=2;}
-               void select_id_Cause() { set(id_Cause); type=3;}
-               void select_id_SCGChangeIndication() { set(id_SCGChangeIndication); type=4;}
-               void select_id_ServingPLMN() { set(id_ServingPLMN); type=5;}
-               void select_id_UE_ContextInformationSeNBModReq() { set(id_UE_ContextInformationSeNBModReq); type=6;}
-               void select_id_MeNBtoSeNBContainer() { set(id_MeNBtoSeNBContainer); type=7;}
-               void select_id_CSGMembershipStatus() { set(id_CSGMembershipStatus); type=8;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=9;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(id_SeNB_UE_X2AP_ID_Extension); type=10;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_SeNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_Cause)) { type = 3; return true; }
-                       else if(equal(id_SCGChangeIndication)) { type = 4; return true; }
-                       else if(equal(id_ServingPLMN)) { type = 5; return true; }
-                       else if(equal(id_UE_ContextInformationSeNBModReq)) { type = 6; return true; }
-                       else if(equal(id_MeNBtoSeNBContainer)) { type = 7; return true; }
-                       else if(equal(id_CSGMembershipStatus)) { type = 8; return true; }
-                       else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 9; return true; }
-                       else if(equal(id_SeNB_UE_X2AP_ID_Extension)) { type = 10; return true; }
-                       else { type = 11; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_SCGChangeIndication);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_ServingPLMN);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(id_UE_ContextInformationSeNBModReq);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(id_MeNBtoSeNBContainer);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(id_CSGMembershipStatus);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID_Extension);} return false;
-                       case 11: type = 11; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 11; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(reject); type=2;}
-               void select_id_Cause() { set(ignore); type=3;}
-               void select_id_SCGChangeIndication() { set(ignore); type=4;}
-               void select_id_ServingPLMN() { set(ignore); type=5;}
-               void select_id_UE_ContextInformationSeNBModReq() { set(reject); type=6;}
-               void select_id_MeNBtoSeNBContainer() { set(ignore); type=7;}
-               void select_id_CSGMembershipStatus() { set(reject); type=8;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=9;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(reject); type=10;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else if(equal(ignore)) { type = 5; return true; }
-                       else if(equal(reject)) { type = 6; return true; }
-                       else if(equal(ignore)) { type = 7; return true; }
-                       else if(equal(reject)) { type = 8; return true; }
-                       else if(equal(reject)) { type = 9; return true; }
-                       else if(equal(reject)) { type = 10; return true; }
-                       else { type = 11; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 11: type = 11; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               UE_X2AP_ID& select_id_SeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(2); }
-               UE_X2AP_ID const* get_id_SeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(2); }
-               Cause& select_id_Cause() { return set<Cause>(3); }
-               Cause const* get_id_Cause() const { return get<Cause>(3); }
-               SCGChangeIndication& select_id_SCGChangeIndication() { return set<SCGChangeIndication>(4); }
-               SCGChangeIndication const* get_id_SCGChangeIndication() const { return get<SCGChangeIndication>(4); }
-               PLMN_Identity& select_id_ServingPLMN() { return set<PLMN_Identity>(5); }
-               PLMN_Identity const* get_id_ServingPLMN() const { return get<PLMN_Identity>(5); }
-               UE_ContextInformationSeNBModReq& select_id_UE_ContextInformationSeNBModReq() { return set<UE_ContextInformationSeNBModReq>(6); }
-               UE_ContextInformationSeNBModReq const* get_id_UE_ContextInformationSeNBModReq() const { return get<UE_ContextInformationSeNBModReq>(6); }
-               MeNBtoSeNBContainer& select_id_MeNBtoSeNBContainer() { return set<MeNBtoSeNBContainer>(7); }
-               MeNBtoSeNBContainer const* get_id_MeNBtoSeNBContainer() const { return get<MeNBtoSeNBContainer>(7); }
-               CSGMembershipStatus& select_id_CSGMembershipStatus() { return set<CSGMembershipStatus>(8); }
-               CSGMembershipStatus const* get_id_CSGMembershipStatus() const { return get<CSGMembershipStatus>(8); }
-               UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(9); }
-               UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(9); }
-               UE_X2AP_ID_Extension& select_id_SeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(10); }
-               UE_X2AP_ID_Extension const* get_id_SeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(10); }
-               bool is_unknown() const { return type == 11; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<UE_X2AP_ID>(); break;
-                       case 3: var.destroy<Cause>(); break;
-                       case 4: var.destroy<SCGChangeIndication>(); break;
-                       case 5: var.destroy<PLMN_Identity>(); break;
-                       case 6: var.destroy<UE_ContextInformationSeNBModReq>(); break;
-                       case 7: var.destroy<MeNBtoSeNBContainer>(); break;
-                       case 8: var.destroy<CSGMembershipStatus>(); break;
-                       case 9: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 10: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<UE_X2AP_ID>(2);
-                       v.template operator()<Cause>(3);
-                       v.template operator()<SCGChangeIndication>(4);
-                       v.template operator()<PLMN_Identity>(5);
-                       v.template operator()<UE_ContextInformationSeNBModReq>(6);
-                       v.template operator()<MeNBtoSeNBContainer>(7);
-                       v.template operator()<CSGMembershipStatus>(8);
-                       v.template operator()<UE_X2AP_ID_Extension>(9);
-                       v.template operator()<UE_X2AP_ID_Extension>(10);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_MeNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_SeNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_Cause()); return true;
-                       case 4: v(select_id_SCGChangeIndication()); return true;
-                       case 5: v(select_id_ServingPLMN()); return true;
-                       case 6: v(select_id_UE_ContextInformationSeNBModReq()); return true;
-                       case 7: v(select_id_MeNBtoSeNBContainer()); return true;
-                       case 8: v(select_id_CSGMembershipStatus()); return true;
-                       case 9: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true;
-                       case 10: v(select_id_SeNB_UE_X2AP_ID_Extension()); return true;
-                       case 11: if(type != 11) {clear(); asn::base::set();} type = 11; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<Cause>()); return true;
-                       case 4: v(var.as<SCGChangeIndication>()); return true;
-                       case 5: v(var.as<PLMN_Identity>()); return true;
-                       case 6: v(var.as<UE_ContextInformationSeNBModReq>()); return true;
-                       case 7: v(var.as<MeNBtoSeNBContainer>()); return true;
-                       case 8: v(var.as<CSGMembershipStatus>()); return true;
-                       case 9: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 10: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(CSGMembershipStatus)];
-                       char dummy2[sizeof(Cause)];
-                       char dummy3[sizeof(MeNBtoSeNBContainer)];
-                       char dummy4[sizeof(PLMN_Identity)];
-                       char dummy5[sizeof(SCGChangeIndication)];
-                       char dummy6[sizeof(UE_ContextInformationSeNBModReq)];
-                       char dummy7[sizeof(UE_X2AP_ID)];
-                       char dummy8[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 11; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(mandatory); type=2;}
-               void select_id_Cause() { set(mandatory); type=3;}
-               void select_id_SCGChangeIndication() { set(optional); type=4;}
-               void select_id_ServingPLMN() { set(optional); type=5;}
-               void select_id_UE_ContextInformationSeNBModReq() { set(optional); type=6;}
-               void select_id_MeNBtoSeNBContainer() { set(optional); type=7;}
-               void select_id_CSGMembershipStatus() { set(optional); type=8;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=9;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(optional); type=10;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else if(equal(optional)) { type = 6; return true; }
-                       else if(equal(optional)) { type = 7; return true; }
-                       else if(equal(optional)) { type = 8; return true; }
-                       else if(equal(optional)) { type = 9; return true; }
-                       else if(equal(optional)) { type = 10; return true; }
-                       else { type = 11; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 11: type = 11; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-SeNBModificationRequest ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{ SeNBModificationRequest-IEs}},
-       ...
-}
-*/
-
-struct SeNBModificationRequest : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "SeNBModificationRequest";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<SeNBModificationRequest_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<SeNBModificationRequest_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-SeNBModificationRequestAcknowledge-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-MeNB-UE-X2AP-ID                                                         CRITICALITY ignore      TYPE UE-X2AP-ID                                                                                 PRESENCE mandatory}|
-       { ID id-SeNB-UE-X2AP-ID                                                         CRITICALITY ignore      TYPE UE-X2AP-ID                                                                                 PRESENCE mandatory}|
-       { ID id-E-RABs-Admitted-ToBeAdded-ModAckList            CRITICALITY ignore      TYPE E-RABs-Admitted-ToBeAdded-ModAckList               PRESENCE optional}|
-       { ID id-E-RABs-Admitted-ToBeModified-ModAckList         CRITICALITY ignore      TYPE E-RABs-Admitted-ToBeModified-ModAckList    PRESENCE optional}|
-       { ID id-E-RABs-Admitted-ToBeReleased-ModAckList         CRITICALITY ignore      TYPE E-RABs-Admitted-ToBeReleased-ModAckList    PRESENCE optional}|
-       { ID id-E-RABs-NotAdmitted-List                                         CRITICALITY ignore      TYPE E-RAB-List                                                                                 PRESENCE optional}|
-       { ID id-SeNBtoMeNBContainer                                                     CRITICALITY ignore      TYPE SeNBtoMeNBContainer                                                                PRESENCE optional}|
-       { ID id-CriticalityDiagnostics                                          CRITICALITY ignore      TYPE CriticalityDiagnostics                                                     PRESENCE optional}|
-       { ID id-MeNB-UE-X2AP-ID-Extension                                       CRITICALITY ignore      TYPE UE-X2AP-ID-Extension                                                       PRESENCE optional}|
-       { ID id-SeNB-UE-X2AP-ID-Extension                                       CRITICALITY ignore      TYPE UE-X2AP-ID-Extension                                                       PRESENCE optional},
-       ...
-}
-*/
-
-struct SeNBModificationRequestAcknowledge_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 11; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(id_SeNB_UE_X2AP_ID); type=2;}
-               void select_id_E_RABs_Admitted_ToBeAdded_ModAckList() { set(id_E_RABs_Admitted_ToBeAdded_ModAckList); type=3;}
-               void select_id_E_RABs_Admitted_ToBeModified_ModAckList() { set(id_E_RABs_Admitted_ToBeModified_ModAckList); type=4;}
-               void select_id_E_RABs_Admitted_ToBeReleased_ModAckList() { set(id_E_RABs_Admitted_ToBeReleased_ModAckList); type=5;}
-               void select_id_E_RABs_NotAdmitted_List() { set(id_E_RABs_NotAdmitted_List); type=6;}
-               void select_id_SeNBtoMeNBContainer() { set(id_SeNBtoMeNBContainer); type=7;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=8;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=9;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(id_SeNB_UE_X2AP_ID_Extension); type=10;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_SeNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_E_RABs_Admitted_ToBeAdded_ModAckList)) { type = 3; return true; }
-                       else if(equal(id_E_RABs_Admitted_ToBeModified_ModAckList)) { type = 4; return true; }
-                       else if(equal(id_E_RABs_Admitted_ToBeReleased_ModAckList)) { type = 5; return true; }
-                       else if(equal(id_E_RABs_NotAdmitted_List)) { type = 6; return true; }
-                       else if(equal(id_SeNBtoMeNBContainer)) { type = 7; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 8; return true; }
-                       else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 9; return true; }
-                       else if(equal(id_SeNB_UE_X2AP_ID_Extension)) { type = 10; return true; }
-                       else { type = 11; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_E_RABs_Admitted_ToBeAdded_ModAckList);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_E_RABs_Admitted_ToBeModified_ModAckList);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_E_RABs_Admitted_ToBeReleased_ModAckList);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(id_E_RABs_NotAdmitted_List);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(id_SeNBtoMeNBContainer);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID_Extension);} return false;
-                       case 11: type = 11; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 11; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(ignore); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(ignore); type=2;}
-               void select_id_E_RABs_Admitted_ToBeAdded_ModAckList() { set(ignore); type=3;}
-               void select_id_E_RABs_Admitted_ToBeModified_ModAckList() { set(ignore); type=4;}
-               void select_id_E_RABs_Admitted_ToBeReleased_ModAckList() { set(ignore); type=5;}
-               void select_id_E_RABs_NotAdmitted_List() { set(ignore); type=6;}
-               void select_id_SeNBtoMeNBContainer() { set(ignore); type=7;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=8;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(ignore); type=9;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(ignore); type=10;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else if(equal(ignore)) { type = 5; return true; }
-                       else if(equal(ignore)) { type = 6; return true; }
-                       else if(equal(ignore)) { type = 7; return true; }
-                       else if(equal(ignore)) { type = 8; return true; }
-                       else if(equal(ignore)) { type = 9; return true; }
-                       else if(equal(ignore)) { type = 10; return true; }
-                       else { type = 11; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 11: type = 11; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               UE_X2AP_ID& select_id_SeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(2); }
-               UE_X2AP_ID const* get_id_SeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(2); }
-               E_RABs_Admitted_ToBeAdded_ModAckList& select_id_E_RABs_Admitted_ToBeAdded_ModAckList() { return set<E_RABs_Admitted_ToBeAdded_ModAckList>(3); }
-               E_RABs_Admitted_ToBeAdded_ModAckList const* get_id_E_RABs_Admitted_ToBeAdded_ModAckList() const { return get<E_RABs_Admitted_ToBeAdded_ModAckList>(3); }
-               E_RABs_Admitted_ToBeModified_ModAckList& select_id_E_RABs_Admitted_ToBeModified_ModAckList() { return set<E_RABs_Admitted_ToBeModified_ModAckList>(4); }
-               E_RABs_Admitted_ToBeModified_ModAckList const* get_id_E_RABs_Admitted_ToBeModified_ModAckList() const { return get<E_RABs_Admitted_ToBeModified_ModAckList>(4); }
-               E_RABs_Admitted_ToBeReleased_ModAckList& select_id_E_RABs_Admitted_ToBeReleased_ModAckList() { return set<E_RABs_Admitted_ToBeReleased_ModAckList>(5); }
-               E_RABs_Admitted_ToBeReleased_ModAckList const* get_id_E_RABs_Admitted_ToBeReleased_ModAckList() const { return get<E_RABs_Admitted_ToBeReleased_ModAckList>(5); }
-               E_RAB_List& select_id_E_RABs_NotAdmitted_List() { return set<E_RAB_List>(6); }
-               E_RAB_List const* get_id_E_RABs_NotAdmitted_List() const { return get<E_RAB_List>(6); }
-               SeNBtoMeNBContainer& select_id_SeNBtoMeNBContainer() { return set<SeNBtoMeNBContainer>(7); }
-               SeNBtoMeNBContainer const* get_id_SeNBtoMeNBContainer() const { return get<SeNBtoMeNBContainer>(7); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(8); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(8); }
-               UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(9); }
-               UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(9); }
-               UE_X2AP_ID_Extension& select_id_SeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(10); }
-               UE_X2AP_ID_Extension const* get_id_SeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(10); }
-               bool is_unknown() const { return type == 11; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<UE_X2AP_ID>(); break;
-                       case 3: var.destroy<E_RABs_Admitted_ToBeAdded_ModAckList>(); break;
-                       case 4: var.destroy<E_RABs_Admitted_ToBeModified_ModAckList>(); break;
-                       case 5: var.destroy<E_RABs_Admitted_ToBeReleased_ModAckList>(); break;
-                       case 6: var.destroy<E_RAB_List>(); break;
-                       case 7: var.destroy<SeNBtoMeNBContainer>(); break;
-                       case 8: var.destroy<CriticalityDiagnostics>(); break;
-                       case 9: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 10: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<UE_X2AP_ID>(2);
-                       v.template operator()<E_RABs_Admitted_ToBeAdded_ModAckList>(3);
-                       v.template operator()<E_RABs_Admitted_ToBeModified_ModAckList>(4);
-                       v.template operator()<E_RABs_Admitted_ToBeReleased_ModAckList>(5);
-                       v.template operator()<E_RAB_List>(6);
-                       v.template operator()<SeNBtoMeNBContainer>(7);
-                       v.template operator()<CriticalityDiagnostics>(8);
-                       v.template operator()<UE_X2AP_ID_Extension>(9);
-                       v.template operator()<UE_X2AP_ID_Extension>(10);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_MeNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_SeNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_E_RABs_Admitted_ToBeAdded_ModAckList()); return true;
-                       case 4: v(select_id_E_RABs_Admitted_ToBeModified_ModAckList()); return true;
-                       case 5: v(select_id_E_RABs_Admitted_ToBeReleased_ModAckList()); return true;
-                       case 6: v(select_id_E_RABs_NotAdmitted_List()); return true;
-                       case 7: v(select_id_SeNBtoMeNBContainer()); return true;
-                       case 8: v(select_id_CriticalityDiagnostics()); return true;
-                       case 9: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true;
-                       case 10: v(select_id_SeNB_UE_X2AP_ID_Extension()); return true;
-                       case 11: if(type != 11) {clear(); asn::base::set();} type = 11; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<E_RABs_Admitted_ToBeAdded_ModAckList>()); return true;
-                       case 4: v(var.as<E_RABs_Admitted_ToBeModified_ModAckList>()); return true;
-                       case 5: v(var.as<E_RABs_Admitted_ToBeReleased_ModAckList>()); return true;
-                       case 6: v(var.as<E_RAB_List>()); return true;
-                       case 7: v(var.as<SeNBtoMeNBContainer>()); return true;
-                       case 8: v(var.as<CriticalityDiagnostics>()); return true;
-                       case 9: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 10: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(CriticalityDiagnostics)];
-                       char dummy2[sizeof(E_RAB_List)];
-                       char dummy3[sizeof(E_RABs_Admitted_ToBeAdded_ModAckList)];
-                       char dummy4[sizeof(E_RABs_Admitted_ToBeModified_ModAckList)];
-                       char dummy5[sizeof(E_RABs_Admitted_ToBeReleased_ModAckList)];
-                       char dummy6[sizeof(SeNBtoMeNBContainer)];
-                       char dummy7[sizeof(UE_X2AP_ID)];
-                       char dummy8[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 11; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(mandatory); type=2;}
-               void select_id_E_RABs_Admitted_ToBeAdded_ModAckList() { set(optional); type=3;}
-               void select_id_E_RABs_Admitted_ToBeModified_ModAckList() { set(optional); type=4;}
-               void select_id_E_RABs_Admitted_ToBeReleased_ModAckList() { set(optional); type=5;}
-               void select_id_E_RABs_NotAdmitted_List() { set(optional); type=6;}
-               void select_id_SeNBtoMeNBContainer() { set(optional); type=7;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=8;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=9;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(optional); type=10;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(optional)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else if(equal(optional)) { type = 6; return true; }
-                       else if(equal(optional)) { type = 7; return true; }
-                       else if(equal(optional)) { type = 8; return true; }
-                       else if(equal(optional)) { type = 9; return true; }
-                       else if(equal(optional)) { type = 10; return true; }
-                       else { type = 11; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 11: type = 11; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-SeNBModificationRequestAcknowledge ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{SeNBModificationRequestAcknowledge-IEs}},
-       ...
-}
-*/
-
-struct SeNBModificationRequestAcknowledge : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "SeNBModificationRequestAcknowledge";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<SeNBModificationRequestAcknowledge_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<SeNBModificationRequestAcknowledge_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-SeNBModificationRequestReject-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-MeNB-UE-X2AP-ID                                         CRITICALITY ignore      TYPE UE-X2AP-ID                                 PRESENCE mandatory}|
-       { ID id-SeNB-UE-X2AP-ID                                         CRITICALITY ignore      TYPE UE-X2AP-ID                                 PRESENCE mandatory}|
-       { ID id-Cause                                                           CRITICALITY ignore      TYPE Cause                                              PRESENCE mandatory}|
-       { ID id-CriticalityDiagnostics                          CRITICALITY ignore      TYPE CriticalityDiagnostics             PRESENCE optional}|
-       { ID id-MeNB-UE-X2AP-ID-Extension                       CRITICALITY ignore      TYPE UE-X2AP-ID-Extension               PRESENCE optional}|
-       { ID id-SeNB-UE-X2AP-ID-Extension                       CRITICALITY ignore      TYPE UE-X2AP-ID-Extension               PRESENCE optional},
-       ...
-}
-*/
-
-struct SeNBModificationRequestReject_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 7; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(id_SeNB_UE_X2AP_ID); type=2;}
-               void select_id_Cause() { set(id_Cause); type=3;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=4;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=5;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(id_SeNB_UE_X2AP_ID_Extension); type=6;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_SeNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_Cause)) { type = 3; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 4; return true; }
-                       else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 5; return true; }
-                       else if(equal(id_SeNB_UE_X2AP_ID_Extension)) { type = 6; return true; }
-                       else { type = 7; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID_Extension);} return false;
-                       case 7: type = 7; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 7; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(ignore); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(ignore); type=2;}
-               void select_id_Cause() { set(ignore); type=3;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=4;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(ignore); type=5;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(ignore); type=6;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else if(equal(ignore)) { type = 5; return true; }
-                       else if(equal(ignore)) { type = 6; return true; }
-                       else { type = 7; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 7: type = 7; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               UE_X2AP_ID& select_id_SeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(2); }
-               UE_X2AP_ID const* get_id_SeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(2); }
-               Cause& select_id_Cause() { return set<Cause>(3); }
-               Cause const* get_id_Cause() const { return get<Cause>(3); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(4); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(4); }
-               UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(5); }
-               UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(5); }
-               UE_X2AP_ID_Extension& select_id_SeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(6); }
-               UE_X2AP_ID_Extension const* get_id_SeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(6); }
-               bool is_unknown() const { return type == 7; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<UE_X2AP_ID>(); break;
-                       case 3: var.destroy<Cause>(); break;
-                       case 4: var.destroy<CriticalityDiagnostics>(); break;
-                       case 5: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 6: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<UE_X2AP_ID>(2);
-                       v.template operator()<Cause>(3);
-                       v.template operator()<CriticalityDiagnostics>(4);
-                       v.template operator()<UE_X2AP_ID_Extension>(5);
-                       v.template operator()<UE_X2AP_ID_Extension>(6);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_MeNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_SeNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_Cause()); return true;
-                       case 4: v(select_id_CriticalityDiagnostics()); return true;
-                       case 5: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true;
-                       case 6: v(select_id_SeNB_UE_X2AP_ID_Extension()); return true;
-                       case 7: if(type != 7) {clear(); asn::base::set();} type = 7; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<Cause>()); return true;
-                       case 4: v(var.as<CriticalityDiagnostics>()); return true;
-                       case 5: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 6: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(Cause)];
-                       char dummy2[sizeof(CriticalityDiagnostics)];
-                       char dummy3[sizeof(UE_X2AP_ID)];
-                       char dummy4[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 7; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(mandatory); type=2;}
-               void select_id_Cause() { set(mandatory); type=3;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=4;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=5;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(optional); type=6;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else if(equal(optional)) { type = 6; return true; }
-                       else { type = 7; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 7: type = 7; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-SeNBModificationRequestReject ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{SeNBModificationRequestReject-IEs}},
-       ...
-}
-*/
-
-struct SeNBModificationRequestReject : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "SeNBModificationRequestReject";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<SeNBModificationRequestReject_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<SeNBModificationRequestReject_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-SeNBModificationRequired-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-MeNB-UE-X2AP-ID                                         CRITICALITY reject      TYPE UE-X2AP-ID                                                 PRESENCE mandatory}|
-       { ID id-SeNB-UE-X2AP-ID                                         CRITICALITY reject      TYPE UE-X2AP-ID                                                 PRESENCE mandatory}|
-       { ID id-Cause                                                           CRITICALITY ignore      TYPE Cause                                                              PRESENCE mandatory}|
-       { ID id-SCGChangeIndication                                     CRITICALITY ignore      TYPE SCGChangeIndication                                PRESENCE optional}|
-       { ID id-E-RABs-ToBeReleased-ModReqd                     CRITICALITY ignore      TYPE E-RABs-ToBeReleased-ModReqd                PRESENCE optional}|
-       { ID id-SeNBtoMeNBContainer                                     CRITICALITY ignore      TYPE SeNBtoMeNBContainer                                PRESENCE optional}|
-       { ID id-MeNB-UE-X2AP-ID-Extension                       CRITICALITY reject      TYPE UE-X2AP-ID-Extension                               PRESENCE optional}|
-       { ID id-SeNB-UE-X2AP-ID-Extension                       CRITICALITY reject      TYPE UE-X2AP-ID-Extension                               PRESENCE optional},
-       ...
-}
-*/
-
-struct SeNBModificationRequired_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 9; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(id_SeNB_UE_X2AP_ID); type=2;}
-               void select_id_Cause() { set(id_Cause); type=3;}
-               void select_id_SCGChangeIndication() { set(id_SCGChangeIndication); type=4;}
-               void select_id_E_RABs_ToBeReleased_ModReqd() { set(id_E_RABs_ToBeReleased_ModReqd); type=5;}
-               void select_id_SeNBtoMeNBContainer() { set(id_SeNBtoMeNBContainer); type=6;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=7;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(id_SeNB_UE_X2AP_ID_Extension); type=8;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_SeNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_Cause)) { type = 3; return true; }
-                       else if(equal(id_SCGChangeIndication)) { type = 4; return true; }
-                       else if(equal(id_E_RABs_ToBeReleased_ModReqd)) { type = 5; return true; }
-                       else if(equal(id_SeNBtoMeNBContainer)) { type = 6; return true; }
-                       else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 7; return true; }
-                       else if(equal(id_SeNB_UE_X2AP_ID_Extension)) { type = 8; return true; }
-                       else { type = 9; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_SCGChangeIndication);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_E_RABs_ToBeReleased_ModReqd);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(id_SeNBtoMeNBContainer);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID_Extension);} return false;
-                       case 9: type = 9; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 9; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(reject); type=2;}
-               void select_id_Cause() { set(ignore); type=3;}
-               void select_id_SCGChangeIndication() { set(ignore); type=4;}
-               void select_id_E_RABs_ToBeReleased_ModReqd() { set(ignore); type=5;}
-               void select_id_SeNBtoMeNBContainer() { set(ignore); type=6;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=7;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(reject); type=8;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else if(equal(ignore)) { type = 5; return true; }
-                       else if(equal(ignore)) { type = 6; return true; }
-                       else if(equal(reject)) { type = 7; return true; }
-                       else if(equal(reject)) { type = 8; return true; }
-                       else { type = 9; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 9: type = 9; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               UE_X2AP_ID& select_id_SeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(2); }
-               UE_X2AP_ID const* get_id_SeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(2); }
-               Cause& select_id_Cause() { return set<Cause>(3); }
-               Cause const* get_id_Cause() const { return get<Cause>(3); }
-               SCGChangeIndication& select_id_SCGChangeIndication() { return set<SCGChangeIndication>(4); }
-               SCGChangeIndication const* get_id_SCGChangeIndication() const { return get<SCGChangeIndication>(4); }
-               E_RABs_ToBeReleased_ModReqd& select_id_E_RABs_ToBeReleased_ModReqd() { return set<E_RABs_ToBeReleased_ModReqd>(5); }
-               E_RABs_ToBeReleased_ModReqd const* get_id_E_RABs_ToBeReleased_ModReqd() const { return get<E_RABs_ToBeReleased_ModReqd>(5); }
-               SeNBtoMeNBContainer& select_id_SeNBtoMeNBContainer() { return set<SeNBtoMeNBContainer>(6); }
-               SeNBtoMeNBContainer const* get_id_SeNBtoMeNBContainer() const { return get<SeNBtoMeNBContainer>(6); }
-               UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(7); }
-               UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(7); }
-               UE_X2AP_ID_Extension& select_id_SeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(8); }
-               UE_X2AP_ID_Extension const* get_id_SeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(8); }
-               bool is_unknown() const { return type == 9; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<UE_X2AP_ID>(); break;
-                       case 3: var.destroy<Cause>(); break;
-                       case 4: var.destroy<SCGChangeIndication>(); break;
-                       case 5: var.destroy<E_RABs_ToBeReleased_ModReqd>(); break;
-                       case 6: var.destroy<SeNBtoMeNBContainer>(); break;
-                       case 7: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 8: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<UE_X2AP_ID>(2);
-                       v.template operator()<Cause>(3);
-                       v.template operator()<SCGChangeIndication>(4);
-                       v.template operator()<E_RABs_ToBeReleased_ModReqd>(5);
-                       v.template operator()<SeNBtoMeNBContainer>(6);
-                       v.template operator()<UE_X2AP_ID_Extension>(7);
-                       v.template operator()<UE_X2AP_ID_Extension>(8);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_MeNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_SeNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_Cause()); return true;
-                       case 4: v(select_id_SCGChangeIndication()); return true;
-                       case 5: v(select_id_E_RABs_ToBeReleased_ModReqd()); return true;
-                       case 6: v(select_id_SeNBtoMeNBContainer()); return true;
-                       case 7: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true;
-                       case 8: v(select_id_SeNB_UE_X2AP_ID_Extension()); return true;
-                       case 9: if(type != 9) {clear(); asn::base::set();} type = 9; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<Cause>()); return true;
-                       case 4: v(var.as<SCGChangeIndication>()); return true;
-                       case 5: v(var.as<E_RABs_ToBeReleased_ModReqd>()); return true;
-                       case 6: v(var.as<SeNBtoMeNBContainer>()); return true;
-                       case 7: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 8: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(Cause)];
-                       char dummy2[sizeof(E_RABs_ToBeReleased_ModReqd)];
-                       char dummy3[sizeof(SCGChangeIndication)];
-                       char dummy4[sizeof(SeNBtoMeNBContainer)];
-                       char dummy5[sizeof(UE_X2AP_ID)];
-                       char dummy6[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 9; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(mandatory); type=2;}
-               void select_id_Cause() { set(mandatory); type=3;}
-               void select_id_SCGChangeIndication() { set(optional); type=4;}
-               void select_id_E_RABs_ToBeReleased_ModReqd() { set(optional); type=5;}
-               void select_id_SeNBtoMeNBContainer() { set(optional); type=6;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=7;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(optional); type=8;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else if(equal(optional)) { type = 6; return true; }
-                       else if(equal(optional)) { type = 7; return true; }
-                       else if(equal(optional)) { type = 8; return true; }
-                       else { type = 9; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 9: type = 9; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-SeNBModificationRequired ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container            {{SeNBModificationRequired-IEs}},
-       ...
-}
-*/
-
-struct SeNBModificationRequired : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "SeNBModificationRequired";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<SeNBModificationRequired_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<SeNBModificationRequired_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-SeNBReconfigurationComplete-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-MeNB-UE-X2AP-ID                                                 CRITICALITY reject      TYPE UE-X2AP-ID                                                                 PRESENCE mandatory}|
-       { ID id-SeNB-UE-X2AP-ID                                                 CRITICALITY reject      TYPE UE-X2AP-ID                                                                 PRESENCE mandatory}|
-       { ID id-ResponseInformationSeNBReconfComp               CRITICALITY ignore      TYPE ResponseInformationSeNBReconfComp  PRESENCE mandatory}|
-       { ID id-MeNB-UE-X2AP-ID-Extension                               CRITICALITY reject      TYPE UE-X2AP-ID-Extension                                               PRESENCE optional}|
-       { ID id-SeNB-UE-X2AP-ID-Extension                               CRITICALITY reject      TYPE UE-X2AP-ID-Extension                                               PRESENCE optional},
-       ...
-}
-*/
-
-struct SeNBReconfigurationComplete_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(id_SeNB_UE_X2AP_ID); type=2;}
-               void select_id_ResponseInformationSeNBReconfComp() { set(id_ResponseInformationSeNBReconfComp); type=3;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=4;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(id_SeNB_UE_X2AP_ID_Extension); type=5;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_SeNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_ResponseInformationSeNBReconfComp)) { type = 3; return true; }
-                       else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 4; return true; }
-                       else if(equal(id_SeNB_UE_X2AP_ID_Extension)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_ResponseInformationSeNBReconfComp);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID_Extension);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(reject); type=2;}
-               void select_id_ResponseInformationSeNBReconfComp() { set(ignore); type=3;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=4;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(reject); type=5;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(reject)) { type = 4; return true; }
-                       else if(equal(reject)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               UE_X2AP_ID& select_id_SeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(2); }
-               UE_X2AP_ID const* get_id_SeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(2); }
-               ResponseInformationSeNBReconfComp& select_id_ResponseInformationSeNBReconfComp() { return set<ResponseInformationSeNBReconfComp>(3); }
-               ResponseInformationSeNBReconfComp const* get_id_ResponseInformationSeNBReconfComp() const { return get<ResponseInformationSeNBReconfComp>(3); }
-               UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(4); }
-               UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(4); }
-               UE_X2AP_ID_Extension& select_id_SeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(5); }
-               UE_X2AP_ID_Extension const* get_id_SeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(5); }
-               bool is_unknown() const { return type == 6; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<UE_X2AP_ID>(); break;
-                       case 3: var.destroy<ResponseInformationSeNBReconfComp>(); break;
-                       case 4: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 5: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<UE_X2AP_ID>(2);
-                       v.template operator()<ResponseInformationSeNBReconfComp>(3);
-                       v.template operator()<UE_X2AP_ID_Extension>(4);
-                       v.template operator()<UE_X2AP_ID_Extension>(5);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_MeNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_SeNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_ResponseInformationSeNBReconfComp()); return true;
-                       case 4: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true;
-                       case 5: v(select_id_SeNB_UE_X2AP_ID_Extension()); return true;
-                       case 6: if(type != 6) {clear(); asn::base::set();} type = 6; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<ResponseInformationSeNBReconfComp>()); return true;
-                       case 4: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 5: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(ResponseInformationSeNBReconfComp)];
-                       char dummy2[sizeof(UE_X2AP_ID)];
-                       char dummy3[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(mandatory); type=2;}
-               void select_id_ResponseInformationSeNBReconfComp() { set(mandatory); type=3;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=4;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(optional); type=5;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-SeNBReconfigurationComplete ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{SeNBReconfigurationComplete-IEs}},
-       ...
-}
-*/
-
-struct SeNBReconfigurationComplete : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "SeNBReconfigurationComplete";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<SeNBReconfigurationComplete_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<SeNBReconfigurationComplete_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-SeNBReleaseConfirm-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-MeNB-UE-X2AP-ID                                                 CRITICALITY ignore      TYPE UE-X2AP-ID                                                                 PRESENCE mandatory}|
-       { ID id-SeNB-UE-X2AP-ID                                                 CRITICALITY ignore      TYPE UE-X2AP-ID                                                                 PRESENCE mandatory}|
-       { ID id-E-RABs-ToBeReleased-List-RelConf                CRITICALITY ignore      TYPE E-RABs-ToBeReleased-List-RelConf           PRESENCE optional}|
-       { ID id-CriticalityDiagnostics                                  CRITICALITY ignore      TYPE CriticalityDiagnostics                                     PRESENCE optional}|
-       { ID id-MeNB-UE-X2AP-ID-Extension                               CRITICALITY ignore      TYPE UE-X2AP-ID-Extension                                               PRESENCE optional}|
-       { ID id-SeNB-UE-X2AP-ID-Extension                               CRITICALITY ignore      TYPE UE-X2AP-ID-Extension                                               PRESENCE optional},
-       ...
-}
-*/
-
-struct SeNBReleaseConfirm_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 7; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(id_SeNB_UE_X2AP_ID); type=2;}
-               void select_id_E_RABs_ToBeReleased_List_RelConf() { set(id_E_RABs_ToBeReleased_List_RelConf); type=3;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=4;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=5;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(id_SeNB_UE_X2AP_ID_Extension); type=6;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_SeNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_E_RABs_ToBeReleased_List_RelConf)) { type = 3; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 4; return true; }
-                       else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 5; return true; }
-                       else if(equal(id_SeNB_UE_X2AP_ID_Extension)) { type = 6; return true; }
-                       else { type = 7; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_E_RABs_ToBeReleased_List_RelConf);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID_Extension);} return false;
-                       case 7: type = 7; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 7; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(ignore); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(ignore); type=2;}
-               void select_id_E_RABs_ToBeReleased_List_RelConf() { set(ignore); type=3;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=4;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(ignore); type=5;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(ignore); type=6;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else if(equal(ignore)) { type = 5; return true; }
-                       else if(equal(ignore)) { type = 6; return true; }
-                       else { type = 7; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 7: type = 7; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               UE_X2AP_ID& select_id_SeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(2); }
-               UE_X2AP_ID const* get_id_SeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(2); }
-               E_RABs_ToBeReleased_List_RelConf& select_id_E_RABs_ToBeReleased_List_RelConf() { return set<E_RABs_ToBeReleased_List_RelConf>(3); }
-               E_RABs_ToBeReleased_List_RelConf const* get_id_E_RABs_ToBeReleased_List_RelConf() const { return get<E_RABs_ToBeReleased_List_RelConf>(3); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(4); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(4); }
-               UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(5); }
-               UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(5); }
-               UE_X2AP_ID_Extension& select_id_SeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(6); }
-               UE_X2AP_ID_Extension const* get_id_SeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(6); }
-               bool is_unknown() const { return type == 7; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<UE_X2AP_ID>(); break;
-                       case 3: var.destroy<E_RABs_ToBeReleased_List_RelConf>(); break;
-                       case 4: var.destroy<CriticalityDiagnostics>(); break;
-                       case 5: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 6: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<UE_X2AP_ID>(2);
-                       v.template operator()<E_RABs_ToBeReleased_List_RelConf>(3);
-                       v.template operator()<CriticalityDiagnostics>(4);
-                       v.template operator()<UE_X2AP_ID_Extension>(5);
-                       v.template operator()<UE_X2AP_ID_Extension>(6);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_MeNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_SeNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_E_RABs_ToBeReleased_List_RelConf()); return true;
-                       case 4: v(select_id_CriticalityDiagnostics()); return true;
-                       case 5: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true;
-                       case 6: v(select_id_SeNB_UE_X2AP_ID_Extension()); return true;
-                       case 7: if(type != 7) {clear(); asn::base::set();} type = 7; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<E_RABs_ToBeReleased_List_RelConf>()); return true;
-                       case 4: v(var.as<CriticalityDiagnostics>()); return true;
-                       case 5: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 6: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(CriticalityDiagnostics)];
-                       char dummy2[sizeof(E_RABs_ToBeReleased_List_RelConf)];
-                       char dummy3[sizeof(UE_X2AP_ID)];
-                       char dummy4[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 7; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(mandatory); type=2;}
-               void select_id_E_RABs_ToBeReleased_List_RelConf() { set(optional); type=3;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=4;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=5;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(optional); type=6;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(optional)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else if(equal(optional)) { type = 6; return true; }
-                       else { type = 7; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 7: type = 7; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-SeNBReleaseConfirm ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{SeNBReleaseConfirm-IEs}},
-       ...
-}
-*/
-
-struct SeNBReleaseConfirm : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "SeNBReleaseConfirm";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<SeNBReleaseConfirm_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<SeNBReleaseConfirm_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-SeNBReleaseRequest-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-MeNB-UE-X2AP-ID                                         CRITICALITY reject      TYPE UE-X2AP-ID                                                                 PRESENCE mandatory}|
-       { ID id-SeNB-UE-X2AP-ID                                         CRITICALITY reject      TYPE UE-X2AP-ID                                                                 PRESENCE optional}|
-       { ID id-Cause                                                           CRITICALITY ignore      TYPE Cause                                                                              PRESENCE optional}|
-       { ID id-E-RABs-ToBeReleased-List-RelReq         CRITICALITY ignore      TYPE E-RABs-ToBeReleased-List-RelReq            PRESENCE optional}|
-       { ID id-UE-ContextKeptIndicator                         CRITICALITY ignore      TYPE UE-ContextKeptIndicator                                    PRESENCE optional}|
-       { ID id-MeNB-UE-X2AP-ID-Extension                       CRITICALITY reject      TYPE UE-X2AP-ID-Extension                                               PRESENCE optional}|
-       { ID id-SeNB-UE-X2AP-ID-Extension                       CRITICALITY reject      TYPE UE-X2AP-ID-Extension                                               PRESENCE optional}|
-       { ID id-MakeBeforeBreakIndicator                        CRITICALITY ignore      TYPE MakeBeforeBreakIndicator                                   PRESENCE optional},
-       ...
-}
-*/
-
-struct SeNBReleaseRequest_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 9; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(id_SeNB_UE_X2AP_ID); type=2;}
-               void select_id_Cause() { set(id_Cause); type=3;}
-               void select_id_E_RABs_ToBeReleased_List_RelReq() { set(id_E_RABs_ToBeReleased_List_RelReq); type=4;}
-               void select_id_UE_ContextKeptIndicator() { set(id_UE_ContextKeptIndicator); type=5;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=6;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(id_SeNB_UE_X2AP_ID_Extension); type=7;}
-               void select_id_MakeBeforeBreakIndicator() { set(id_MakeBeforeBreakIndicator); type=8;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_SeNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_Cause)) { type = 3; return true; }
-                       else if(equal(id_E_RABs_ToBeReleased_List_RelReq)) { type = 4; return true; }
-                       else if(equal(id_UE_ContextKeptIndicator)) { type = 5; return true; }
-                       else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 6; return true; }
-                       else if(equal(id_SeNB_UE_X2AP_ID_Extension)) { type = 7; return true; }
-                       else if(equal(id_MakeBeforeBreakIndicator)) { type = 8; return true; }
-                       else { type = 9; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_E_RABs_ToBeReleased_List_RelReq);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_UE_ContextKeptIndicator);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID_Extension);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(id_MakeBeforeBreakIndicator);} return false;
-                       case 9: type = 9; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 9; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(reject); type=2;}
-               void select_id_Cause() { set(ignore); type=3;}
-               void select_id_E_RABs_ToBeReleased_List_RelReq() { set(ignore); type=4;}
-               void select_id_UE_ContextKeptIndicator() { set(ignore); type=5;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=6;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(reject); type=7;}
-               void select_id_MakeBeforeBreakIndicator() { set(ignore); type=8;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else if(equal(ignore)) { type = 5; return true; }
-                       else if(equal(reject)) { type = 6; return true; }
-                       else if(equal(reject)) { type = 7; return true; }
-                       else if(equal(ignore)) { type = 8; return true; }
-                       else { type = 9; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 9: type = 9; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               UE_X2AP_ID& select_id_SeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(2); }
-               UE_X2AP_ID const* get_id_SeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(2); }
-               Cause& select_id_Cause() { return set<Cause>(3); }
-               Cause const* get_id_Cause() const { return get<Cause>(3); }
-               E_RABs_ToBeReleased_List_RelReq& select_id_E_RABs_ToBeReleased_List_RelReq() { return set<E_RABs_ToBeReleased_List_RelReq>(4); }
-               E_RABs_ToBeReleased_List_RelReq const* get_id_E_RABs_ToBeReleased_List_RelReq() const { return get<E_RABs_ToBeReleased_List_RelReq>(4); }
-               UE_ContextKeptIndicator& select_id_UE_ContextKeptIndicator() { return set<UE_ContextKeptIndicator>(5); }
-               UE_ContextKeptIndicator const* get_id_UE_ContextKeptIndicator() const { return get<UE_ContextKeptIndicator>(5); }
-               UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(6); }
-               UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(6); }
-               UE_X2AP_ID_Extension& select_id_SeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(7); }
-               UE_X2AP_ID_Extension const* get_id_SeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(7); }
-               MakeBeforeBreakIndicator& select_id_MakeBeforeBreakIndicator() { return set<MakeBeforeBreakIndicator>(8); }
-               MakeBeforeBreakIndicator const* get_id_MakeBeforeBreakIndicator() const { return get<MakeBeforeBreakIndicator>(8); }
-               bool is_unknown() const { return type == 9; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<UE_X2AP_ID>(); break;
-                       case 3: var.destroy<Cause>(); break;
-                       case 4: var.destroy<E_RABs_ToBeReleased_List_RelReq>(); break;
-                       case 5: var.destroy<UE_ContextKeptIndicator>(); break;
-                       case 6: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 7: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 8: var.destroy<MakeBeforeBreakIndicator>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<UE_X2AP_ID>(2);
-                       v.template operator()<Cause>(3);
-                       v.template operator()<E_RABs_ToBeReleased_List_RelReq>(4);
-                       v.template operator()<UE_ContextKeptIndicator>(5);
-                       v.template operator()<UE_X2AP_ID_Extension>(6);
-                       v.template operator()<UE_X2AP_ID_Extension>(7);
-                       v.template operator()<MakeBeforeBreakIndicator>(8);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_MeNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_SeNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_Cause()); return true;
-                       case 4: v(select_id_E_RABs_ToBeReleased_List_RelReq()); return true;
-                       case 5: v(select_id_UE_ContextKeptIndicator()); return true;
-                       case 6: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true;
-                       case 7: v(select_id_SeNB_UE_X2AP_ID_Extension()); return true;
-                       case 8: v(select_id_MakeBeforeBreakIndicator()); return true;
-                       case 9: if(type != 9) {clear(); asn::base::set();} type = 9; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<Cause>()); return true;
-                       case 4: v(var.as<E_RABs_ToBeReleased_List_RelReq>()); return true;
-                       case 5: v(var.as<UE_ContextKeptIndicator>()); return true;
-                       case 6: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 7: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 8: v(var.as<MakeBeforeBreakIndicator>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(Cause)];
-                       char dummy2[sizeof(E_RABs_ToBeReleased_List_RelReq)];
-                       char dummy3[sizeof(MakeBeforeBreakIndicator)];
-                       char dummy4[sizeof(UE_ContextKeptIndicator)];
-                       char dummy5[sizeof(UE_X2AP_ID)];
-                       char dummy6[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 9; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(optional); type=2;}
-               void select_id_Cause() { set(optional); type=3;}
-               void select_id_E_RABs_ToBeReleased_List_RelReq() { set(optional); type=4;}
-               void select_id_UE_ContextKeptIndicator() { set(optional); type=5;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=6;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(optional); type=7;}
-               void select_id_MakeBeforeBreakIndicator() { set(optional); type=8;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else if(equal(optional)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else if(equal(optional)) { type = 6; return true; }
-                       else if(equal(optional)) { type = 7; return true; }
-                       else if(equal(optional)) { type = 8; return true; }
-                       else { type = 9; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 9: type = 9; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-SeNBReleaseRequest ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container            {{SeNBReleaseRequest-IEs}},
-       ...
-}
-*/
-
-struct SeNBReleaseRequest : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "SeNBReleaseRequest";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<SeNBReleaseRequest_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<SeNBReleaseRequest_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-SeNBReleaseRequired-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-MeNB-UE-X2AP-ID                                 CRITICALITY reject      TYPE UE-X2AP-ID                                 PRESENCE mandatory}|
-       { ID id-SeNB-UE-X2AP-ID                                 CRITICALITY reject      TYPE UE-X2AP-ID                                 PRESENCE mandatory}|
-       { ID id-Cause                                                   CRITICALITY ignore      TYPE Cause                                              PRESENCE mandatory}|
-       { ID id-MeNB-UE-X2AP-ID-Extension               CRITICALITY reject      TYPE UE-X2AP-ID-Extension               PRESENCE optional}|
-       { ID id-SeNB-UE-X2AP-ID-Extension               CRITICALITY reject      TYPE UE-X2AP-ID-Extension               PRESENCE optional},
-       ...
-}
-*/
-
-struct SeNBReleaseRequired_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(id_SeNB_UE_X2AP_ID); type=2;}
-               void select_id_Cause() { set(id_Cause); type=3;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=4;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(id_SeNB_UE_X2AP_ID_Extension); type=5;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_SeNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_Cause)) { type = 3; return true; }
-                       else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 4; return true; }
-                       else if(equal(id_SeNB_UE_X2AP_ID_Extension)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_SeNB_UE_X2AP_ID_Extension);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(reject); type=2;}
-               void select_id_Cause() { set(ignore); type=3;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=4;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(reject); type=5;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(reject)) { type = 4; return true; }
-                       else if(equal(reject)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               UE_X2AP_ID& select_id_SeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(2); }
-               UE_X2AP_ID const* get_id_SeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(2); }
-               Cause& select_id_Cause() { return set<Cause>(3); }
-               Cause const* get_id_Cause() const { return get<Cause>(3); }
-               UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(4); }
-               UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(4); }
-               UE_X2AP_ID_Extension& select_id_SeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(5); }
-               UE_X2AP_ID_Extension const* get_id_SeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(5); }
-               bool is_unknown() const { return type == 6; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<UE_X2AP_ID>(); break;
-                       case 3: var.destroy<Cause>(); break;
-                       case 4: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 5: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<UE_X2AP_ID>(2);
-                       v.template operator()<Cause>(3);
-                       v.template operator()<UE_X2AP_ID_Extension>(4);
-                       v.template operator()<UE_X2AP_ID_Extension>(5);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_MeNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_SeNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_Cause()); return true;
-                       case 4: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true;
-                       case 5: v(select_id_SeNB_UE_X2AP_ID_Extension()); return true;
-                       case 6: if(type != 6) {clear(); asn::base::set();} type = 6; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<Cause>()); return true;
-                       case 4: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 5: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(Cause)];
-                       char dummy2[sizeof(UE_X2AP_ID)];
-                       char dummy3[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_SeNB_UE_X2AP_ID() { set(mandatory); type=2;}
-               void select_id_Cause() { set(mandatory); type=3;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=4;}
-               void select_id_SeNB_UE_X2AP_ID_Extension() { set(optional); type=5;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-SeNBReleaseRequired ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{SeNBReleaseRequired-IEs}},
-       ...
-}
-*/
-
-struct SeNBReleaseRequired : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "SeNBReleaseRequired";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<SeNBReleaseRequired_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<SeNBReleaseRequired_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-SecondaryRATDataUsageReport-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-MeNB-UE-X2AP-ID                                         CRITICALITY reject      TYPE UE-X2AP-ID                                                         PRESENCE mandatory}|
-       { ID id-SgNB-UE-X2AP-ID                                         CRITICALITY reject      TYPE SgNB-UE-X2AP-ID                                                    PRESENCE mandatory}|
-       { ID id-SecondaryRATUsageReportList                     CRITICALITY reject      TYPE SecondaryRATUsageReportList                        PRESENCE mandatory}|
-       { ID id-MeNB-UE-X2AP-ID-Extension                       CRITICALITY reject      TYPE UE-X2AP-ID-Extension                                       PRESENCE optional},
-       ...
-}
-*/
-
-struct SecondaryRATDataUsageReport_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 5; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;}
-               void select_id_SecondaryRATUsageReportList() { set(id_SecondaryRATUsageReportList); type=3;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=4;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_SecondaryRATUsageReportList)) { type = 3; return true; }
-                       else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 4; return true; }
-                       else { type = 5; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_SecondaryRATUsageReportList);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false;
-                       case 5: type = 5; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 5; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(reject); type=2;}
-               void select_id_SecondaryRATUsageReportList() { set(reject); type=3;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=4;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(reject)) { type = 3; return true; }
-                       else if(equal(reject)) { type = 4; return true; }
-                       else { type = 5; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 5: type = 5; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set<SgNB_UE_X2AP_ID>(2); }
-               SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get<SgNB_UE_X2AP_ID>(2); }
-               SecondaryRATUsageReportList& select_id_SecondaryRATUsageReportList() { return set<SecondaryRATUsageReportList>(3); }
-               SecondaryRATUsageReportList const* get_id_SecondaryRATUsageReportList() const { return get<SecondaryRATUsageReportList>(3); }
-               UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(4); }
-               UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(4); }
-               bool is_unknown() const { return type == 5; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<SgNB_UE_X2AP_ID>(); break;
-                       case 3: var.destroy<SecondaryRATUsageReportList>(); break;
-                       case 4: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<SgNB_UE_X2AP_ID>(2);
-                       v.template operator()<SecondaryRATUsageReportList>(3);
-                       v.template operator()<UE_X2AP_ID_Extension>(4);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_MeNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_SgNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_SecondaryRATUsageReportList()); return true;
-                       case 4: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true;
-                       case 5: if(type != 5) {clear(); asn::base::set();} type = 5; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<SgNB_UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<SecondaryRATUsageReportList>()); return true;
-                       case 4: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(SecondaryRATUsageReportList)];
-                       char dummy2[sizeof(SgNB_UE_X2AP_ID)];
-                       char dummy3[sizeof(UE_X2AP_ID)];
-                       char dummy4[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 5; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(mandatory); type=2;}
-               void select_id_SecondaryRATUsageReportList() { set(mandatory); type=3;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=4;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else { type = 5; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-SecondaryRATDataUsageReport ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container            {{SecondaryRATDataUsageReport-IEs}},
-       ...
-}
-*/
-
-struct SecondaryRATDataUsageReport : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "SecondaryRATDataUsageReport";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<SecondaryRATDataUsageReport_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<SecondaryRATDataUsageReport_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-SgNBActivityNotification-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-MeNB-UE-X2AP-ID                                         CRITICALITY reject      TYPE UE-X2AP-ID                                                         PRESENCE mandatory}|
-       { ID id-SgNB-UE-X2AP-ID                                         CRITICALITY reject      TYPE SgNB-UE-X2AP-ID                                                    PRESENCE mandatory}|
-       { ID id-UEContextLevelUserPlaneActivity         CRITICALITY ignore      TYPE UserPlaneTrafficActivityReport             PRESENCE optional}|
-       { ID id-ERABActivityNotifyItemList                      CRITICALITY ignore      TYPE ERABActivityNotifyItemList                 PRESENCE optional}|
-       { ID id-MeNB-UE-X2AP-ID-Extension                       CRITICALITY reject      TYPE UE-X2AP-ID-Extension                                       PRESENCE optional},
-       ...
-}
-*/
-
-struct SgNBActivityNotification_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;}
-               void select_id_UEContextLevelUserPlaneActivity() { set(id_UEContextLevelUserPlaneActivity); type=3;}
-               void select_id_ERABActivityNotifyItemList() { set(id_ERABActivityNotifyItemList); type=4;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=5;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_UEContextLevelUserPlaneActivity)) { type = 3; return true; }
-                       else if(equal(id_ERABActivityNotifyItemList)) { type = 4; return true; }
-                       else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_UEContextLevelUserPlaneActivity);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_ERABActivityNotifyItemList);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(reject); type=2;}
-               void select_id_UEContextLevelUserPlaneActivity() { set(ignore); type=3;}
-               void select_id_ERABActivityNotifyItemList() { set(ignore); type=4;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=5;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else if(equal(reject)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set<SgNB_UE_X2AP_ID>(2); }
-               SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get<SgNB_UE_X2AP_ID>(2); }
-               UserPlaneTrafficActivityReport& select_id_UEContextLevelUserPlaneActivity() { return set<UserPlaneTrafficActivityReport>(3); }
-               UserPlaneTrafficActivityReport const* get_id_UEContextLevelUserPlaneActivity() const { return get<UserPlaneTrafficActivityReport>(3); }
-               ERABActivityNotifyItemList& select_id_ERABActivityNotifyItemList() { return set<ERABActivityNotifyItemList>(4); }
-               ERABActivityNotifyItemList const* get_id_ERABActivityNotifyItemList() const { return get<ERABActivityNotifyItemList>(4); }
-               UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(5); }
-               UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(5); }
-               bool is_unknown() const { return type == 6; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<SgNB_UE_X2AP_ID>(); break;
-                       case 3: var.destroy<UserPlaneTrafficActivityReport>(); break;
-                       case 4: var.destroy<ERABActivityNotifyItemList>(); break;
-                       case 5: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<SgNB_UE_X2AP_ID>(2);
-                       v.template operator()<UserPlaneTrafficActivityReport>(3);
-                       v.template operator()<ERABActivityNotifyItemList>(4);
-                       v.template operator()<UE_X2AP_ID_Extension>(5);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_MeNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_SgNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_UEContextLevelUserPlaneActivity()); return true;
-                       case 4: v(select_id_ERABActivityNotifyItemList()); return true;
-                       case 5: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true;
-                       case 6: if(type != 6) {clear(); asn::base::set();} type = 6; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<SgNB_UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<UserPlaneTrafficActivityReport>()); return true;
-                       case 4: v(var.as<ERABActivityNotifyItemList>()); return true;
-                       case 5: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(ERABActivityNotifyItemList)];
-                       char dummy2[sizeof(SgNB_UE_X2AP_ID)];
-                       char dummy3[sizeof(UE_X2AP_ID)];
-                       char dummy4[sizeof(UE_X2AP_ID_Extension)];
-                       char dummy5[sizeof(UserPlaneTrafficActivityReport)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(mandatory); type=2;}
-               void select_id_UEContextLevelUserPlaneActivity() { set(optional); type=3;}
-               void select_id_ERABActivityNotifyItemList() { set(optional); type=4;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=5;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(optional)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-SgNBActivityNotification ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container            {{SgNBActivityNotification-IEs}},
-       ...
-}
-*/
-
-struct SgNBActivityNotification : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "SgNBActivityNotification";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<SgNBActivityNotification_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<SgNBActivityNotification_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-SgNBAdditionRequest-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-MeNB-UE-X2AP-ID                                                 CRITICALITY reject      TYPE UE-X2AP-ID                                                                         PRESENCE mandatory}|
-       { ID id-NRUESecurityCapabilities                                        CRITICALITY reject      TYPE NRUESecurityCapabilities                                   PRESENCE mandatory}|
-       { ID id-SgNBSecurityKey                                                 CRITICALITY reject      TYPE SgNBSecurityKey                                                                    PRESENCE mandatory}|
-       { ID id-SgNBUEAggregateMaximumBitRate                   CRITICALITY reject      TYPE UEAggregateMaximumBitRate                                  PRESENCE mandatory}|
-       { ID id-SelectedPLMN                                                            CRITICALITY ignore      TYPE PLMN-Identity                                                                      PRESENCE optional}|
-       { ID id-HandoverRestrictionList                                 CRITICALITY ignore      TYPE HandoverRestrictionList                                            PRESENCE optional}|
-       { ID id-E-RABs-ToBeAdded-SgNBAddReqList                 CRITICALITY reject      TYPE E-RABs-ToBeAdded-SgNBAddReqList                    PRESENCE mandatory}|
-       { ID id-MeNBtoSgNBContainer                                             CRITICALITY reject      TYPE MeNBtoSgNBContainer                                                                PRESENCE mandatory}|
-       { ID id-SgNB-UE-X2AP-ID                                                 CRITICALITY reject      TYPE SgNB-UE-X2AP-ID                                                                    PRESENCE optional}|
-       { ID id-ExpectedUEBehaviour                                             CRITICALITY ignore      TYPE ExpectedUEBehaviour                                                                PRESENCE optional}|
-       { ID id-MeNB-UE-X2AP-ID-Extension                               CRITICALITY reject      TYPE UE-X2AP-ID-Extension                                                       PRESENCE optional}|
-       { ID id-RequestedSplitSRBs                                              CRITICALITY reject      TYPE SplitSRBs                                                                          PRESENCE optional}|
-       { ID id-MeNBResourceCoordinationInformation             CRITICALITY ignore      TYPE MeNBResourceCoordinationInformation                PRESENCE optional}|
-       { ID id-SGNB-Addition-Trigger-Ind                               CRITICALITY reject      TYPE SGNB-Addition-Trigger-Ind                                  PRESENCE optional}|
-       { ID id-SubscriberProfileIDforRFP                               CRITICALITY ignore      TYPE SubscriberProfileIDforRFP                                  PRESENCE optional}|
-       { ID id-MeNBCell-ID                                                             CRITICALITY reject      TYPE ECGI                                                                                       PRESENCE mandatory},
-       ...
-}
-*/
-
-struct SgNBAdditionRequest_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 17; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;}
-               void select_id_NRUESecurityCapabilities() { set(id_NRUESecurityCapabilities); type=2;}
-               void select_id_SgNBSecurityKey() { set(id_SgNBSecurityKey); type=3;}
-               void select_id_SgNBUEAggregateMaximumBitRate() { set(id_SgNBUEAggregateMaximumBitRate); type=4;}
-               void select_id_SelectedPLMN() { set(id_SelectedPLMN); type=5;}
-               void select_id_HandoverRestrictionList() { set(id_HandoverRestrictionList); type=6;}
-               void select_id_E_RABs_ToBeAdded_SgNBAddReqList() { set(id_E_RABs_ToBeAdded_SgNBAddReqList); type=7;}
-               void select_id_MeNBtoSgNBContainer() { set(id_MeNBtoSgNBContainer); type=8;}
-               void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=9;}
-               void select_id_ExpectedUEBehaviour() { set(id_ExpectedUEBehaviour); type=10;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=11;}
-               void select_id_RequestedSplitSRBs() { set(id_RequestedSplitSRBs); type=12;}
-               void select_id_MeNBResourceCoordinationInformation() { set(id_MeNBResourceCoordinationInformation); type=13;}
-               void select_id_SGNB_Addition_Trigger_Ind() { set(id_SGNB_Addition_Trigger_Ind); type=14;}
-               void select_id_SubscriberProfileIDforRFP() { set(id_SubscriberProfileIDforRFP); type=15;}
-               void select_id_MeNBCell_ID() { set(id_MeNBCell_ID); type=16;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_NRUESecurityCapabilities)) { type = 2; return true; }
-                       else if(equal(id_SgNBSecurityKey)) { type = 3; return true; }
-                       else if(equal(id_SgNBUEAggregateMaximumBitRate)) { type = 4; return true; }
-                       else if(equal(id_SelectedPLMN)) { type = 5; return true; }
-                       else if(equal(id_HandoverRestrictionList)) { type = 6; return true; }
-                       else if(equal(id_E_RABs_ToBeAdded_SgNBAddReqList)) { type = 7; return true; }
-                       else if(equal(id_MeNBtoSgNBContainer)) { type = 8; return true; }
-                       else if(equal(id_SgNB_UE_X2AP_ID)) { type = 9; return true; }
-                       else if(equal(id_ExpectedUEBehaviour)) { type = 10; return true; }
-                       else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 11; return true; }
-                       else if(equal(id_RequestedSplitSRBs)) { type = 12; return true; }
-                       else if(equal(id_MeNBResourceCoordinationInformation)) { type = 13; return true; }
-                       else if(equal(id_SGNB_Addition_Trigger_Ind)) { type = 14; return true; }
-                       else if(equal(id_SubscriberProfileIDforRFP)) { type = 15; return true; }
-                       else if(equal(id_MeNBCell_ID)) { type = 16; return true; }
-                       else { type = 17; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_NRUESecurityCapabilities);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_SgNBSecurityKey);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_SgNBUEAggregateMaximumBitRate);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_SelectedPLMN);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(id_HandoverRestrictionList);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(id_E_RABs_ToBeAdded_SgNBAddReqList);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(id_MeNBtoSgNBContainer);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(id_ExpectedUEBehaviour);} return false;
-                       case 11: type = 11; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false;
-                       case 12: type = 12; if(v(ref_nested())) { return equal(id_RequestedSplitSRBs);} return false;
-                       case 13: type = 13; if(v(ref_nested())) { return equal(id_MeNBResourceCoordinationInformation);} return false;
-                       case 14: type = 14; if(v(ref_nested())) { return equal(id_SGNB_Addition_Trigger_Ind);} return false;
-                       case 15: type = 15; if(v(ref_nested())) { return equal(id_SubscriberProfileIDforRFP);} return false;
-                       case 16: type = 16; if(v(ref_nested())) { return equal(id_MeNBCell_ID);} return false;
-                       case 17: type = 17; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 17; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;}
-               void select_id_NRUESecurityCapabilities() { set(reject); type=2;}
-               void select_id_SgNBSecurityKey() { set(reject); type=3;}
-               void select_id_SgNBUEAggregateMaximumBitRate() { set(reject); type=4;}
-               void select_id_SelectedPLMN() { set(ignore); type=5;}
-               void select_id_HandoverRestrictionList() { set(ignore); type=6;}
-               void select_id_E_RABs_ToBeAdded_SgNBAddReqList() { set(reject); type=7;}
-               void select_id_MeNBtoSgNBContainer() { set(reject); type=8;}
-               void select_id_SgNB_UE_X2AP_ID() { set(reject); type=9;}
-               void select_id_ExpectedUEBehaviour() { set(ignore); type=10;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=11;}
-               void select_id_RequestedSplitSRBs() { set(reject); type=12;}
-               void select_id_MeNBResourceCoordinationInformation() { set(ignore); type=13;}
-               void select_id_SGNB_Addition_Trigger_Ind() { set(reject); type=14;}
-               void select_id_SubscriberProfileIDforRFP() { set(ignore); type=15;}
-               void select_id_MeNBCell_ID() { set(reject); type=16;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(reject)) { type = 3; return true; }
-                       else if(equal(reject)) { type = 4; return true; }
-                       else if(equal(ignore)) { type = 5; return true; }
-                       else if(equal(ignore)) { type = 6; return true; }
-                       else if(equal(reject)) { type = 7; return true; }
-                       else if(equal(reject)) { type = 8; return true; }
-                       else if(equal(reject)) { type = 9; return true; }
-                       else if(equal(ignore)) { type = 10; return true; }
-                       else if(equal(reject)) { type = 11; return true; }
-                       else if(equal(reject)) { type = 12; return true; }
-                       else if(equal(ignore)) { type = 13; return true; }
-                       else if(equal(reject)) { type = 14; return true; }
-                       else if(equal(ignore)) { type = 15; return true; }
-                       else if(equal(reject)) { type = 16; return true; }
-                       else { type = 17; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 11: type = 11; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 12: type = 12; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 13: type = 13; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 14: type = 14; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 15: type = 15; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 16: type = 16; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 17: type = 17; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               NRUESecurityCapabilities& select_id_NRUESecurityCapabilities() { return set<NRUESecurityCapabilities>(2); }
-               NRUESecurityCapabilities const* get_id_NRUESecurityCapabilities() const { return get<NRUESecurityCapabilities>(2); }
-               SgNBSecurityKey& select_id_SgNBSecurityKey() { return set<SgNBSecurityKey>(3); }
-               SgNBSecurityKey const* get_id_SgNBSecurityKey() const { return get<SgNBSecurityKey>(3); }
-               UEAggregateMaximumBitRate& select_id_SgNBUEAggregateMaximumBitRate() { return set<UEAggregateMaximumBitRate>(4); }
-               UEAggregateMaximumBitRate const* get_id_SgNBUEAggregateMaximumBitRate() const { return get<UEAggregateMaximumBitRate>(4); }
-               PLMN_Identity& select_id_SelectedPLMN() { return set<PLMN_Identity>(5); }
-               PLMN_Identity const* get_id_SelectedPLMN() const { return get<PLMN_Identity>(5); }
-               HandoverRestrictionList& select_id_HandoverRestrictionList() { return set<HandoverRestrictionList>(6); }
-               HandoverRestrictionList const* get_id_HandoverRestrictionList() const { return get<HandoverRestrictionList>(6); }
-               E_RABs_ToBeAdded_SgNBAddReqList& select_id_E_RABs_ToBeAdded_SgNBAddReqList() { return set<E_RABs_ToBeAdded_SgNBAddReqList>(7); }
-               E_RABs_ToBeAdded_SgNBAddReqList const* get_id_E_RABs_ToBeAdded_SgNBAddReqList() const { return get<E_RABs_ToBeAdded_SgNBAddReqList>(7); }
-               MeNBtoSgNBContainer& select_id_MeNBtoSgNBContainer() { return set<MeNBtoSgNBContainer>(8); }
-               MeNBtoSgNBContainer const* get_id_MeNBtoSgNBContainer() const { return get<MeNBtoSgNBContainer>(8); }
-               SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set<SgNB_UE_X2AP_ID>(9); }
-               SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get<SgNB_UE_X2AP_ID>(9); }
-               ExpectedUEBehaviour& select_id_ExpectedUEBehaviour() { return set<ExpectedUEBehaviour>(10); }
-               ExpectedUEBehaviour const* get_id_ExpectedUEBehaviour() const { return get<ExpectedUEBehaviour>(10); }
-               UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(11); }
-               UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(11); }
-               SplitSRBs& select_id_RequestedSplitSRBs() { return set<SplitSRBs>(12); }
-               SplitSRBs const* get_id_RequestedSplitSRBs() const { return get<SplitSRBs>(12); }
-               MeNBResourceCoordinationInformation& select_id_MeNBResourceCoordinationInformation() { return set<MeNBResourceCoordinationInformation>(13); }
-               MeNBResourceCoordinationInformation const* get_id_MeNBResourceCoordinationInformation() const { return get<MeNBResourceCoordinationInformation>(13); }
-               SGNB_Addition_Trigger_Ind& select_id_SGNB_Addition_Trigger_Ind() { return set<SGNB_Addition_Trigger_Ind>(14); }
-               SGNB_Addition_Trigger_Ind const* get_id_SGNB_Addition_Trigger_Ind() const { return get<SGNB_Addition_Trigger_Ind>(14); }
-               SubscriberProfileIDforRFP& select_id_SubscriberProfileIDforRFP() { return set<SubscriberProfileIDforRFP>(15); }
-               SubscriberProfileIDforRFP const* get_id_SubscriberProfileIDforRFP() const { return get<SubscriberProfileIDforRFP>(15); }
-               ECGI& select_id_MeNBCell_ID() { return set<ECGI>(16); }
-               ECGI const* get_id_MeNBCell_ID() const { return get<ECGI>(16); }
-               bool is_unknown() const { return type == 17; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<NRUESecurityCapabilities>(); break;
-                       case 3: var.destroy<SgNBSecurityKey>(); break;
-                       case 4: var.destroy<UEAggregateMaximumBitRate>(); break;
-                       case 5: var.destroy<PLMN_Identity>(); break;
-                       case 6: var.destroy<HandoverRestrictionList>(); break;
-                       case 7: var.destroy<E_RABs_ToBeAdded_SgNBAddReqList>(); break;
-                       case 8: var.destroy<MeNBtoSgNBContainer>(); break;
-                       case 9: var.destroy<SgNB_UE_X2AP_ID>(); break;
-                       case 10: var.destroy<ExpectedUEBehaviour>(); break;
-                       case 11: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 12: var.destroy<SplitSRBs>(); break;
-                       case 13: var.destroy<MeNBResourceCoordinationInformation>(); break;
-                       case 14: var.destroy<SGNB_Addition_Trigger_Ind>(); break;
-                       case 15: var.destroy<SubscriberProfileIDforRFP>(); break;
-                       case 16: var.destroy<ECGI>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<NRUESecurityCapabilities>(2);
-                       v.template operator()<SgNBSecurityKey>(3);
-                       v.template operator()<UEAggregateMaximumBitRate>(4);
-                       v.template operator()<PLMN_Identity>(5);
-                       v.template operator()<HandoverRestrictionList>(6);
-                       v.template operator()<E_RABs_ToBeAdded_SgNBAddReqList>(7);
-                       v.template operator()<MeNBtoSgNBContainer>(8);
-                       v.template operator()<SgNB_UE_X2AP_ID>(9);
-                       v.template operator()<ExpectedUEBehaviour>(10);
-                       v.template operator()<UE_X2AP_ID_Extension>(11);
-                       v.template operator()<SplitSRBs>(12);
-                       v.template operator()<MeNBResourceCoordinationInformation>(13);
-                       v.template operator()<SGNB_Addition_Trigger_Ind>(14);
-                       v.template operator()<SubscriberProfileIDforRFP>(15);
-                       v.template operator()<ECGI>(16);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_MeNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_NRUESecurityCapabilities()); return true;
-                       case 3: v(select_id_SgNBSecurityKey()); return true;
-                       case 4: v(select_id_SgNBUEAggregateMaximumBitRate()); return true;
-                       case 5: v(select_id_SelectedPLMN()); return true;
-                       case 6: v(select_id_HandoverRestrictionList()); return true;
-                       case 7: v(select_id_E_RABs_ToBeAdded_SgNBAddReqList()); return true;
-                       case 8: v(select_id_MeNBtoSgNBContainer()); return true;
-                       case 9: v(select_id_SgNB_UE_X2AP_ID()); return true;
-                       case 10: v(select_id_ExpectedUEBehaviour()); return true;
-                       case 11: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true;
-                       case 12: v(select_id_RequestedSplitSRBs()); return true;
-                       case 13: v(select_id_MeNBResourceCoordinationInformation()); return true;
-                       case 14: v(select_id_SGNB_Addition_Trigger_Ind()); return true;
-                       case 15: v(select_id_SubscriberProfileIDforRFP()); return true;
-                       case 16: v(select_id_MeNBCell_ID()); return true;
-                       case 17: if(type != 17) {clear(); asn::base::set();} type = 17; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<NRUESecurityCapabilities>()); return true;
-                       case 3: v(var.as<SgNBSecurityKey>()); return true;
-                       case 4: v(var.as<UEAggregateMaximumBitRate>()); return true;
-                       case 5: v(var.as<PLMN_Identity>()); return true;
-                       case 6: v(var.as<HandoverRestrictionList>()); return true;
-                       case 7: v(var.as<E_RABs_ToBeAdded_SgNBAddReqList>()); return true;
-                       case 8: v(var.as<MeNBtoSgNBContainer>()); return true;
-                       case 9: v(var.as<SgNB_UE_X2AP_ID>()); return true;
-                       case 10: v(var.as<ExpectedUEBehaviour>()); return true;
-                       case 11: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 12: v(var.as<SplitSRBs>()); return true;
-                       case 13: v(var.as<MeNBResourceCoordinationInformation>()); return true;
-                       case 14: v(var.as<SGNB_Addition_Trigger_Ind>()); return true;
-                       case 15: v(var.as<SubscriberProfileIDforRFP>()); return true;
-                       case 16: v(var.as<ECGI>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(ECGI)];
-                       char dummy2[sizeof(E_RABs_ToBeAdded_SgNBAddReqList)];
-                       char dummy3[sizeof(ExpectedUEBehaviour)];
-                       char dummy4[sizeof(HandoverRestrictionList)];
-                       char dummy5[sizeof(MeNBResourceCoordinationInformation)];
-                       char dummy6[sizeof(MeNBtoSgNBContainer)];
-                       char dummy7[sizeof(NRUESecurityCapabilities)];
-                       char dummy8[sizeof(PLMN_Identity)];
-                       char dummy9[sizeof(SGNB_Addition_Trigger_Ind)];
-                       char dummy10[sizeof(SgNBSecurityKey)];
-                       char dummy11[sizeof(SgNB_UE_X2AP_ID)];
-                       char dummy12[sizeof(SplitSRBs)];
-                       char dummy13[sizeof(SubscriberProfileIDforRFP)];
-                       char dummy14[sizeof(UEAggregateMaximumBitRate)];
-                       char dummy15[sizeof(UE_X2AP_ID)];
-                       char dummy16[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 17; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_NRUESecurityCapabilities() { set(mandatory); type=2;}
-               void select_id_SgNBSecurityKey() { set(mandatory); type=3;}
-               void select_id_SgNBUEAggregateMaximumBitRate() { set(mandatory); type=4;}
-               void select_id_SelectedPLMN() { set(optional); type=5;}
-               void select_id_HandoverRestrictionList() { set(optional); type=6;}
-               void select_id_E_RABs_ToBeAdded_SgNBAddReqList() { set(mandatory); type=7;}
-               void select_id_MeNBtoSgNBContainer() { set(mandatory); type=8;}
-               void select_id_SgNB_UE_X2AP_ID() { set(optional); type=9;}
-               void select_id_ExpectedUEBehaviour() { set(optional); type=10;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=11;}
-               void select_id_RequestedSplitSRBs() { set(optional); type=12;}
-               void select_id_MeNBResourceCoordinationInformation() { set(optional); type=13;}
-               void select_id_SGNB_Addition_Trigger_Ind() { set(optional); type=14;}
-               void select_id_SubscriberProfileIDforRFP() { set(optional); type=15;}
-               void select_id_MeNBCell_ID() { set(mandatory); type=16;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else if(equal(mandatory)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else if(equal(optional)) { type = 6; return true; }
-                       else if(equal(mandatory)) { type = 7; return true; }
-                       else if(equal(mandatory)) { type = 8; return true; }
-                       else if(equal(optional)) { type = 9; return true; }
-                       else if(equal(optional)) { type = 10; return true; }
-                       else if(equal(optional)) { type = 11; return true; }
-                       else if(equal(optional)) { type = 12; return true; }
-                       else if(equal(optional)) { type = 13; return true; }
-                       else if(equal(optional)) { type = 14; return true; }
-                       else if(equal(optional)) { type = 15; return true; }
-                       else if(equal(mandatory)) { type = 16; return true; }
-                       else { type = 17; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 11: type = 11; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 12: type = 12; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 13: type = 13; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 14: type = 14; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 15: type = 15; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 16: type = 16; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 17: type = 17; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-SgNBAdditionRequest ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container {{SgNBAdditionRequest-IEs}},
-       ...
-}
-*/
-
-struct SgNBAdditionRequest : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "SgNBAdditionRequest";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<SgNBAdditionRequest_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<SgNBAdditionRequest_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-SgNBAdditionRequestAcknowledge-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-MeNB-UE-X2AP-ID                                                         CRITICALITY reject      TYPE UE-X2AP-ID                                                                                                 PRESENCE mandatory}|
-       { ID id-SgNB-UE-X2AP-ID                                                         CRITICALITY reject      TYPE SgNB-UE-X2AP-ID                                                                                            PRESENCE mandatory}|
-       { ID id-E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList     CRITICALITY ignore      TYPE E-RABs-Admitted-ToBeAdded-SgNBAddReqAckList                        PRESENCE mandatory}|
-       { ID id-E-RABs-NotAdmitted-List                                         CRITICALITY ignore      TYPE E-RAB-List                                                                                                 PRESENCE optional}|
-       { ID id-SgNBtoMeNBContainer                                                     CRITICALITY reject      TYPE SgNBtoMeNBContainer                                                                                PRESENCE mandatory}|
-       { ID id-CriticalityDiagnostics                                          CRITICALITY ignore      TYPE CriticalityDiagnostics                                                                     PRESENCE optional}|
-       { ID id-MeNB-UE-X2AP-ID-Extension                                       CRITICALITY reject      TYPE UE-X2AP-ID-Extension                                                                       PRESENCE optional}|
-       { ID id-AdmittedSplitSRBs                                                       CRITICALITY reject      TYPE SplitSRBs                                                                                                  PRESENCE optional}|
-       { ID id-SgNBResourceCoordinationInformation                     CRITICALITY ignore      TYPE SgNBResourceCoordinationInformation                                PRESENCE optional}|
-       { ID id-RRCConfigIndication                                                     CRITICALITY reject      TYPE RRC-Config-Ind                                                                                             PRESENCE optional},
-       ...
-}
-*/
-
-struct SgNBAdditionRequestAcknowledge_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 11; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;}
-               void select_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList() { set(id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList); type=3;}
-               void select_id_E_RABs_NotAdmitted_List() { set(id_E_RABs_NotAdmitted_List); type=4;}
-               void select_id_SgNBtoMeNBContainer() { set(id_SgNBtoMeNBContainer); type=5;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=6;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=7;}
-               void select_id_AdmittedSplitSRBs() { set(id_AdmittedSplitSRBs); type=8;}
-               void select_id_SgNBResourceCoordinationInformation() { set(id_SgNBResourceCoordinationInformation); type=9;}
-               void select_id_RRCConfigIndication() { set(id_RRCConfigIndication); type=10;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList)) { type = 3; return true; }
-                       else if(equal(id_E_RABs_NotAdmitted_List)) { type = 4; return true; }
-                       else if(equal(id_SgNBtoMeNBContainer)) { type = 5; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 6; return true; }
-                       else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 7; return true; }
-                       else if(equal(id_AdmittedSplitSRBs)) { type = 8; return true; }
-                       else if(equal(id_SgNBResourceCoordinationInformation)) { type = 9; return true; }
-                       else if(equal(id_RRCConfigIndication)) { type = 10; return true; }
-                       else { type = 11; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_E_RABs_NotAdmitted_List);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_SgNBtoMeNBContainer);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(id_AdmittedSplitSRBs);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(id_SgNBResourceCoordinationInformation);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(id_RRCConfigIndication);} return false;
-                       case 11: type = 11; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 11; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(reject); type=2;}
-               void select_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList() { set(ignore); type=3;}
-               void select_id_E_RABs_NotAdmitted_List() { set(ignore); type=4;}
-               void select_id_SgNBtoMeNBContainer() { set(reject); type=5;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=6;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=7;}
-               void select_id_AdmittedSplitSRBs() { set(reject); type=8;}
-               void select_id_SgNBResourceCoordinationInformation() { set(ignore); type=9;}
-               void select_id_RRCConfigIndication() { set(reject); type=10;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else if(equal(reject)) { type = 5; return true; }
-                       else if(equal(ignore)) { type = 6; return true; }
-                       else if(equal(reject)) { type = 7; return true; }
-                       else if(equal(reject)) { type = 8; return true; }
-                       else if(equal(ignore)) { type = 9; return true; }
-                       else if(equal(reject)) { type = 10; return true; }
-                       else { type = 11; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 11: type = 11; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set<SgNB_UE_X2AP_ID>(2); }
-               SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get<SgNB_UE_X2AP_ID>(2); }
-               E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList& select_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList() { return set<E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList>(3); }
-               E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList const* get_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList() const { return get<E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList>(3); }
-               E_RAB_List& select_id_E_RABs_NotAdmitted_List() { return set<E_RAB_List>(4); }
-               E_RAB_List const* get_id_E_RABs_NotAdmitted_List() const { return get<E_RAB_List>(4); }
-               SgNBtoMeNBContainer& select_id_SgNBtoMeNBContainer() { return set<SgNBtoMeNBContainer>(5); }
-               SgNBtoMeNBContainer const* get_id_SgNBtoMeNBContainer() const { return get<SgNBtoMeNBContainer>(5); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(6); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(6); }
-               UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(7); }
-               UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(7); }
-               SplitSRBs& select_id_AdmittedSplitSRBs() { return set<SplitSRBs>(8); }
-               SplitSRBs const* get_id_AdmittedSplitSRBs() const { return get<SplitSRBs>(8); }
-               SgNBResourceCoordinationInformation& select_id_SgNBResourceCoordinationInformation() { return set<SgNBResourceCoordinationInformation>(9); }
-               SgNBResourceCoordinationInformation const* get_id_SgNBResourceCoordinationInformation() const { return get<SgNBResourceCoordinationInformation>(9); }
-               RRC_Config_Ind& select_id_RRCConfigIndication() { return set<RRC_Config_Ind>(10); }
-               RRC_Config_Ind const* get_id_RRCConfigIndication() const { return get<RRC_Config_Ind>(10); }
-               bool is_unknown() const { return type == 11; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<SgNB_UE_X2AP_ID>(); break;
-                       case 3: var.destroy<E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList>(); break;
-                       case 4: var.destroy<E_RAB_List>(); break;
-                       case 5: var.destroy<SgNBtoMeNBContainer>(); break;
-                       case 6: var.destroy<CriticalityDiagnostics>(); break;
-                       case 7: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 8: var.destroy<SplitSRBs>(); break;
-                       case 9: var.destroy<SgNBResourceCoordinationInformation>(); break;
-                       case 10: var.destroy<RRC_Config_Ind>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<SgNB_UE_X2AP_ID>(2);
-                       v.template operator()<E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList>(3);
-                       v.template operator()<E_RAB_List>(4);
-                       v.template operator()<SgNBtoMeNBContainer>(5);
-                       v.template operator()<CriticalityDiagnostics>(6);
-                       v.template operator()<UE_X2AP_ID_Extension>(7);
-                       v.template operator()<SplitSRBs>(8);
-                       v.template operator()<SgNBResourceCoordinationInformation>(9);
-                       v.template operator()<RRC_Config_Ind>(10);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_MeNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_SgNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList()); return true;
-                       case 4: v(select_id_E_RABs_NotAdmitted_List()); return true;
-                       case 5: v(select_id_SgNBtoMeNBContainer()); return true;
-                       case 6: v(select_id_CriticalityDiagnostics()); return true;
-                       case 7: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true;
-                       case 8: v(select_id_AdmittedSplitSRBs()); return true;
-                       case 9: v(select_id_SgNBResourceCoordinationInformation()); return true;
-                       case 10: v(select_id_RRCConfigIndication()); return true;
-                       case 11: if(type != 11) {clear(); asn::base::set();} type = 11; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<SgNB_UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList>()); return true;
-                       case 4: v(var.as<E_RAB_List>()); return true;
-                       case 5: v(var.as<SgNBtoMeNBContainer>()); return true;
-                       case 6: v(var.as<CriticalityDiagnostics>()); return true;
-                       case 7: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 8: v(var.as<SplitSRBs>()); return true;
-                       case 9: v(var.as<SgNBResourceCoordinationInformation>()); return true;
-                       case 10: v(var.as<RRC_Config_Ind>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(CriticalityDiagnostics)];
-                       char dummy2[sizeof(E_RAB_List)];
-                       char dummy3[sizeof(E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList)];
-                       char dummy4[sizeof(RRC_Config_Ind)];
-                       char dummy5[sizeof(SgNBResourceCoordinationInformation)];
-                       char dummy6[sizeof(SgNB_UE_X2AP_ID)];
-                       char dummy7[sizeof(SgNBtoMeNBContainer)];
-                       char dummy8[sizeof(SplitSRBs)];
-                       char dummy9[sizeof(UE_X2AP_ID)];
-                       char dummy10[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 11; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(mandatory); type=2;}
-               void select_id_E_RABs_Admitted_ToBeAdded_SgNBAddReqAckList() { set(mandatory); type=3;}
-               void select_id_E_RABs_NotAdmitted_List() { set(optional); type=4;}
-               void select_id_SgNBtoMeNBContainer() { set(mandatory); type=5;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=6;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=7;}
-               void select_id_AdmittedSplitSRBs() { set(optional); type=8;}
-               void select_id_SgNBResourceCoordinationInformation() { set(optional); type=9;}
-               void select_id_RRCConfigIndication() { set(optional); type=10;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(mandatory)) { type = 5; return true; }
-                       else if(equal(optional)) { type = 6; return true; }
-                       else if(equal(optional)) { type = 7; return true; }
-                       else if(equal(optional)) { type = 8; return true; }
-                       else if(equal(optional)) { type = 9; return true; }
-                       else if(equal(optional)) { type = 10; return true; }
-                       else { type = 11; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 11: type = 11; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-SgNBAdditionRequestAcknowledge ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{SgNBAdditionRequestAcknowledge-IEs}},
-       ...
-}
-*/
-
-struct SgNBAdditionRequestAcknowledge : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "SgNBAdditionRequestAcknowledge";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<SgNBAdditionRequestAcknowledge_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<SgNBAdditionRequestAcknowledge_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-SgNBAdditionRequestReject-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-MeNB-UE-X2AP-ID                                 CRITICALITY reject      TYPE UE-X2AP-ID                                 PRESENCE mandatory}|
-       { ID id-SgNB-UE-X2AP-ID                                 CRITICALITY reject      TYPE SgNB-UE-X2AP-ID                    PRESENCE optional}|
-       { ID id-Cause                                                   CRITICALITY ignore      TYPE Cause                                              PRESENCE mandatory}|
-       { ID id-CriticalityDiagnostics                  CRITICALITY ignore      TYPE CriticalityDiagnostics             PRESENCE optional}|
-       { ID id-MeNB-UE-X2AP-ID-Extension               CRITICALITY reject      TYPE UE-X2AP-ID-Extension               PRESENCE optional},
-       ...
-}
-*/
-
-struct SgNBAdditionRequestReject_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;}
-               void select_id_Cause() { set(id_Cause); type=3;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=4;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=5;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_Cause)) { type = 3; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 4; return true; }
-                       else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(reject); type=2;}
-               void select_id_Cause() { set(ignore); type=3;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=4;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=5;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else if(equal(reject)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set<SgNB_UE_X2AP_ID>(2); }
-               SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get<SgNB_UE_X2AP_ID>(2); }
-               Cause& select_id_Cause() { return set<Cause>(3); }
-               Cause const* get_id_Cause() const { return get<Cause>(3); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(4); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(4); }
-               UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(5); }
-               UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(5); }
-               bool is_unknown() const { return type == 6; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<SgNB_UE_X2AP_ID>(); break;
-                       case 3: var.destroy<Cause>(); break;
-                       case 4: var.destroy<CriticalityDiagnostics>(); break;
-                       case 5: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<SgNB_UE_X2AP_ID>(2);
-                       v.template operator()<Cause>(3);
-                       v.template operator()<CriticalityDiagnostics>(4);
-                       v.template operator()<UE_X2AP_ID_Extension>(5);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_MeNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_SgNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_Cause()); return true;
-                       case 4: v(select_id_CriticalityDiagnostics()); return true;
-                       case 5: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true;
-                       case 6: if(type != 6) {clear(); asn::base::set();} type = 6; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<SgNB_UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<Cause>()); return true;
-                       case 4: v(var.as<CriticalityDiagnostics>()); return true;
-                       case 5: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(Cause)];
-                       char dummy2[sizeof(CriticalityDiagnostics)];
-                       char dummy3[sizeof(SgNB_UE_X2AP_ID)];
-                       char dummy4[sizeof(UE_X2AP_ID)];
-                       char dummy5[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(optional); type=2;}
-               void select_id_Cause() { set(mandatory); type=3;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=4;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=5;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-SgNBAdditionRequestReject ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{SgNBAdditionRequestReject-IEs}},
-       ...
-}
-*/
-
-struct SgNBAdditionRequestReject : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "SgNBAdditionRequestReject";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<SgNBAdditionRequestReject_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<SgNBAdditionRequestReject_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-SgNBChangeConfirm-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-MeNB-UE-X2AP-ID                                                 CRITICALITY ignore      TYPE UE-X2AP-ID                                                                         PRESENCE mandatory}|
-       { ID id-SgNB-UE-X2AP-ID                                                 CRITICALITY ignore      TYPE SgNB-UE-X2AP-ID                                                                    PRESENCE mandatory}|
-       { ID id-E-RABs-ToBeReleased-SgNBChaConfList             CRITICALITY ignore      TYPE E-RABs-ToBeReleased-SgNBChaConfList                PRESENCE optional}|
-       { ID id-CriticalityDiagnostics                                  CRITICALITY ignore      TYPE CriticalityDiagnostics                                             PRESENCE optional}|
-       { ID id-MeNB-UE-X2AP-ID-Extension                               CRITICALITY ignore      TYPE UE-X2AP-ID-Extension                                                       PRESENCE optional},
-       ...
-}
-*/
-
-struct SgNBChangeConfirm_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;}
-               void select_id_E_RABs_ToBeReleased_SgNBChaConfList() { set(id_E_RABs_ToBeReleased_SgNBChaConfList); type=3;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=4;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=5;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_E_RABs_ToBeReleased_SgNBChaConfList)) { type = 3; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 4; return true; }
-                       else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_E_RABs_ToBeReleased_SgNBChaConfList);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(ignore); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(ignore); type=2;}
-               void select_id_E_RABs_ToBeReleased_SgNBChaConfList() { set(ignore); type=3;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=4;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(ignore); type=5;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else if(equal(ignore)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set<SgNB_UE_X2AP_ID>(2); }
-               SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get<SgNB_UE_X2AP_ID>(2); }
-               E_RABs_ToBeReleased_SgNBChaConfList& select_id_E_RABs_ToBeReleased_SgNBChaConfList() { return set<E_RABs_ToBeReleased_SgNBChaConfList>(3); }
-               E_RABs_ToBeReleased_SgNBChaConfList const* get_id_E_RABs_ToBeReleased_SgNBChaConfList() const { return get<E_RABs_ToBeReleased_SgNBChaConfList>(3); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(4); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(4); }
-               UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(5); }
-               UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(5); }
-               bool is_unknown() const { return type == 6; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<SgNB_UE_X2AP_ID>(); break;
-                       case 3: var.destroy<E_RABs_ToBeReleased_SgNBChaConfList>(); break;
-                       case 4: var.destroy<CriticalityDiagnostics>(); break;
-                       case 5: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<SgNB_UE_X2AP_ID>(2);
-                       v.template operator()<E_RABs_ToBeReleased_SgNBChaConfList>(3);
-                       v.template operator()<CriticalityDiagnostics>(4);
-                       v.template operator()<UE_X2AP_ID_Extension>(5);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_MeNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_SgNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_E_RABs_ToBeReleased_SgNBChaConfList()); return true;
-                       case 4: v(select_id_CriticalityDiagnostics()); return true;
-                       case 5: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true;
-                       case 6: if(type != 6) {clear(); asn::base::set();} type = 6; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<SgNB_UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<E_RABs_ToBeReleased_SgNBChaConfList>()); return true;
-                       case 4: v(var.as<CriticalityDiagnostics>()); return true;
-                       case 5: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(CriticalityDiagnostics)];
-                       char dummy2[sizeof(E_RABs_ToBeReleased_SgNBChaConfList)];
-                       char dummy3[sizeof(SgNB_UE_X2AP_ID)];
-                       char dummy4[sizeof(UE_X2AP_ID)];
-                       char dummy5[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(mandatory); type=2;}
-               void select_id_E_RABs_ToBeReleased_SgNBChaConfList() { set(optional); type=3;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=4;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=5;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(optional)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-SgNBChangeConfirm ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{SgNBChangeConfirm-IEs}},
-       ...
-}
-*/
-
-struct SgNBChangeConfirm : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "SgNBChangeConfirm";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<SgNBChangeConfirm_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<SgNBChangeConfirm_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-SgNBChangeRefuse-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-MeNB-UE-X2AP-ID                                         CRITICALITY ignore      TYPE UE-X2AP-ID                                 PRESENCE mandatory}|
-       { ID id-SgNB-UE-X2AP-ID                                         CRITICALITY ignore      TYPE SgNB-UE-X2AP-ID                            PRESENCE mandatory}|
-       { ID id-Cause                                                           CRITICALITY ignore      TYPE Cause                                              PRESENCE mandatory}|
-       { ID id-CriticalityDiagnostics                          CRITICALITY ignore      TYPE CriticalityDiagnostics             PRESENCE optional}|
-       { ID id-MeNB-UE-X2AP-ID-Extension                       CRITICALITY reject      TYPE UE-X2AP-ID-Extension               PRESENCE optional},
-       ...
-}
-*/
-
-struct SgNBChangeRefuse_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;}
-               void select_id_Cause() { set(id_Cause); type=3;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=4;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=5;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_Cause)) { type = 3; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 4; return true; }
-                       else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(ignore); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(ignore); type=2;}
-               void select_id_Cause() { set(ignore); type=3;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=4;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=5;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else if(equal(reject)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set<SgNB_UE_X2AP_ID>(2); }
-               SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get<SgNB_UE_X2AP_ID>(2); }
-               Cause& select_id_Cause() { return set<Cause>(3); }
-               Cause const* get_id_Cause() const { return get<Cause>(3); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(4); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(4); }
-               UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(5); }
-               UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(5); }
-               bool is_unknown() const { return type == 6; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<SgNB_UE_X2AP_ID>(); break;
-                       case 3: var.destroy<Cause>(); break;
-                       case 4: var.destroy<CriticalityDiagnostics>(); break;
-                       case 5: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<SgNB_UE_X2AP_ID>(2);
-                       v.template operator()<Cause>(3);
-                       v.template operator()<CriticalityDiagnostics>(4);
-                       v.template operator()<UE_X2AP_ID_Extension>(5);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_MeNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_SgNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_Cause()); return true;
-                       case 4: v(select_id_CriticalityDiagnostics()); return true;
-                       case 5: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true;
-                       case 6: if(type != 6) {clear(); asn::base::set();} type = 6; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<SgNB_UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<Cause>()); return true;
-                       case 4: v(var.as<CriticalityDiagnostics>()); return true;
-                       case 5: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(Cause)];
-                       char dummy2[sizeof(CriticalityDiagnostics)];
-                       char dummy3[sizeof(SgNB_UE_X2AP_ID)];
-                       char dummy4[sizeof(UE_X2AP_ID)];
-                       char dummy5[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(mandatory); type=2;}
-               void select_id_Cause() { set(mandatory); type=3;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=4;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=5;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-SgNBChangeRefuse ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container            {{SgNBChangeRefuse-IEs}},
-       ...
-}
-*/
-
-struct SgNBChangeRefuse : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "SgNBChangeRefuse";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<SgNBChangeRefuse_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<SgNBChangeRefuse_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-SgNBChangeRequired-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-MeNB-UE-X2AP-ID                                         CRITICALITY reject      TYPE UE-X2AP-ID                                 PRESENCE mandatory}|
-       { ID id-SgNB-UE-X2AP-ID                                         CRITICALITY reject      TYPE SgNB-UE-X2AP-ID                            PRESENCE mandatory}|
-       { ID id-Target-SgNB-ID                                          CRITICALITY reject      TYPE GlobalGNB-ID                                               PRESENCE mandatory}|
-       { ID id-Cause                                                           CRITICALITY ignore      TYPE Cause                                              PRESENCE mandatory}|
-       { ID id-SgNBtoMeNBContainer                                     CRITICALITY reject      TYPE SgNBtoMeNBContainer                        PRESENCE optional}|
-       { ID id-MeNB-UE-X2AP-ID-Extension                       CRITICALITY reject      TYPE UE-X2AP-ID-Extension               PRESENCE optional},
-       ...
-}
-*/
-
-struct SgNBChangeRequired_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 7; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;}
-               void select_id_Target_SgNB_ID() { set(id_Target_SgNB_ID); type=3;}
-               void select_id_Cause() { set(id_Cause); type=4;}
-               void select_id_SgNBtoMeNBContainer() { set(id_SgNBtoMeNBContainer); type=5;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=6;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_Target_SgNB_ID)) { type = 3; return true; }
-                       else if(equal(id_Cause)) { type = 4; return true; }
-                       else if(equal(id_SgNBtoMeNBContainer)) { type = 5; return true; }
-                       else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 6; return true; }
-                       else { type = 7; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_Target_SgNB_ID);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_Cause);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_SgNBtoMeNBContainer);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false;
-                       case 7: type = 7; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 7; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(reject); type=2;}
-               void select_id_Target_SgNB_ID() { set(reject); type=3;}
-               void select_id_Cause() { set(ignore); type=4;}
-               void select_id_SgNBtoMeNBContainer() { set(reject); type=5;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=6;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(reject)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else if(equal(reject)) { type = 5; return true; }
-                       else if(equal(reject)) { type = 6; return true; }
-                       else { type = 7; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 7: type = 7; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set<SgNB_UE_X2AP_ID>(2); }
-               SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get<SgNB_UE_X2AP_ID>(2); }
-               GlobalGNB_ID& select_id_Target_SgNB_ID() { return set<GlobalGNB_ID>(3); }
-               GlobalGNB_ID const* get_id_Target_SgNB_ID() const { return get<GlobalGNB_ID>(3); }
-               Cause& select_id_Cause() { return set<Cause>(4); }
-               Cause const* get_id_Cause() const { return get<Cause>(4); }
-               SgNBtoMeNBContainer& select_id_SgNBtoMeNBContainer() { return set<SgNBtoMeNBContainer>(5); }
-               SgNBtoMeNBContainer const* get_id_SgNBtoMeNBContainer() const { return get<SgNBtoMeNBContainer>(5); }
-               UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(6); }
-               UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(6); }
-               bool is_unknown() const { return type == 7; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<SgNB_UE_X2AP_ID>(); break;
-                       case 3: var.destroy<GlobalGNB_ID>(); break;
-                       case 4: var.destroy<Cause>(); break;
-                       case 5: var.destroy<SgNBtoMeNBContainer>(); break;
-                       case 6: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<SgNB_UE_X2AP_ID>(2);
-                       v.template operator()<GlobalGNB_ID>(3);
-                       v.template operator()<Cause>(4);
-                       v.template operator()<SgNBtoMeNBContainer>(5);
-                       v.template operator()<UE_X2AP_ID_Extension>(6);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_MeNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_SgNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_Target_SgNB_ID()); return true;
-                       case 4: v(select_id_Cause()); return true;
-                       case 5: v(select_id_SgNBtoMeNBContainer()); return true;
-                       case 6: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true;
-                       case 7: if(type != 7) {clear(); asn::base::set();} type = 7; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<SgNB_UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<GlobalGNB_ID>()); return true;
-                       case 4: v(var.as<Cause>()); return true;
-                       case 5: v(var.as<SgNBtoMeNBContainer>()); return true;
-                       case 6: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(Cause)];
-                       char dummy2[sizeof(GlobalGNB_ID)];
-                       char dummy3[sizeof(SgNB_UE_X2AP_ID)];
-                       char dummy4[sizeof(SgNBtoMeNBContainer)];
-                       char dummy5[sizeof(UE_X2AP_ID)];
-                       char dummy6[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 7; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(mandatory); type=2;}
-               void select_id_Target_SgNB_ID() { set(mandatory); type=3;}
-               void select_id_Cause() { set(mandatory); type=4;}
-               void select_id_SgNBtoMeNBContainer() { set(optional); type=5;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=6;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else if(equal(mandatory)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else if(equal(optional)) { type = 6; return true; }
-                       else { type = 7; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 7: type = 7; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-SgNBChangeRequired ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container            {{SgNBChangeRequired-IEs}},
-       ...
-}
-*/
-
-struct SgNBChangeRequired : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "SgNBChangeRequired";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<SgNBChangeRequired_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<SgNBChangeRequired_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-SgNBCounterCheckRequest-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-MeNB-UE-X2AP-ID                                                         CRITICALITY reject      TYPE UE-X2AP-ID                                                                                 PRESENCE mandatory}|
-       { ID id-SgNB-UE-X2AP-ID                                                         CRITICALITY reject      TYPE SgNB-UE-X2AP-ID                                                                            PRESENCE mandatory}|
-       { ID id-E-RABs-SubjectToSgNBCounterCheck-List           CRITICALITY ignore      TYPE E-RABs-SubjectToSgNBCounterCheck-List              PRESENCE mandatory}|
-       { ID id-MeNB-UE-X2AP-ID-Extension                                       CRITICALITY ignore      TYPE UE-X2AP-ID-Extension                                                       PRESENCE optional},
-       ...
-}
-*/
-
-struct SgNBCounterCheckRequest_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 5; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;}
-               void select_id_E_RABs_SubjectToSgNBCounterCheck_List() { set(id_E_RABs_SubjectToSgNBCounterCheck_List); type=3;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=4;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_E_RABs_SubjectToSgNBCounterCheck_List)) { type = 3; return true; }
-                       else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 4; return true; }
-                       else { type = 5; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_E_RABs_SubjectToSgNBCounterCheck_List);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false;
-                       case 5: type = 5; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 5; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(reject); type=2;}
-               void select_id_E_RABs_SubjectToSgNBCounterCheck_List() { set(ignore); type=3;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(ignore); type=4;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else { type = 5; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set<SgNB_UE_X2AP_ID>(2); }
-               SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get<SgNB_UE_X2AP_ID>(2); }
-               E_RABs_SubjectToSgNBCounterCheck_List& select_id_E_RABs_SubjectToSgNBCounterCheck_List() { return set<E_RABs_SubjectToSgNBCounterCheck_List>(3); }
-               E_RABs_SubjectToSgNBCounterCheck_List const* get_id_E_RABs_SubjectToSgNBCounterCheck_List() const { return get<E_RABs_SubjectToSgNBCounterCheck_List>(3); }
-               UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(4); }
-               UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(4); }
-               bool is_unknown() const { return type == 5; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<SgNB_UE_X2AP_ID>(); break;
-                       case 3: var.destroy<E_RABs_SubjectToSgNBCounterCheck_List>(); break;
-                       case 4: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<SgNB_UE_X2AP_ID>(2);
-                       v.template operator()<E_RABs_SubjectToSgNBCounterCheck_List>(3);
-                       v.template operator()<UE_X2AP_ID_Extension>(4);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_MeNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_SgNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_E_RABs_SubjectToSgNBCounterCheck_List()); return true;
-                       case 4: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true;
-                       case 5: if(type != 5) {clear(); asn::base::set();} type = 5; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<SgNB_UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<E_RABs_SubjectToSgNBCounterCheck_List>()); return true;
-                       case 4: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(E_RABs_SubjectToSgNBCounterCheck_List)];
-                       char dummy2[sizeof(SgNB_UE_X2AP_ID)];
-                       char dummy3[sizeof(UE_X2AP_ID)];
-                       char dummy4[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 5; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(mandatory); type=2;}
-               void select_id_E_RABs_SubjectToSgNBCounterCheck_List() { set(mandatory); type=3;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=4;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else { type = 5; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-SgNBCounterCheckRequest ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{SgNBCounterCheckRequest-IEs}},
-       ...
-}
-*/
-
-struct SgNBCounterCheckRequest : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "SgNBCounterCheckRequest";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<SgNBCounterCheckRequest_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<SgNBCounterCheckRequest_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-SgNBModificationConfirm-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-MeNB-UE-X2AP-ID                                                                 CRITICALITY ignore      TYPE UE-X2AP-ID                                                                                 PRESENCE mandatory}|
-       { ID id-SgNB-UE-X2AP-ID                                                                 CRITICALITY ignore      TYPE SgNB-UE-X2AP-ID                                                                    PRESENCE mandatory}|
-       { ID id-E-RABs-AdmittedToBeModified-SgNBModConfList             CRITICALITY ignore      TYPE E-RABs-AdmittedToBeModified-SgNBModConfList                PRESENCE optional}|
-       { ID id-MeNBtoSgNBContainer                                                             CRITICALITY ignore      TYPE MeNBtoSgNBContainer                                                        PRESENCE optional}|
-       { ID id-CriticalityDiagnostics                                                  CRITICALITY ignore      TYPE CriticalityDiagnostics                                             PRESENCE optional}|
-       { ID id-MeNB-UE-X2AP-ID-Extension                                               CRITICALITY ignore      TYPE UE-X2AP-ID-Extension                                                       PRESENCE optional}|
-       { ID id-MeNBResourceCoordinationInformation                             CRITICALITY ignore      TYPE MeNBResourceCoordinationInformation                PRESENCE optional},
-       ...
-}
-*/
-
-struct SgNBModificationConfirm_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 8; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;}
-               void select_id_E_RABs_AdmittedToBeModified_SgNBModConfList() { set(id_E_RABs_AdmittedToBeModified_SgNBModConfList); type=3;}
-               void select_id_MeNBtoSgNBContainer() { set(id_MeNBtoSgNBContainer); type=4;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=5;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=6;}
-               void select_id_MeNBResourceCoordinationInformation() { set(id_MeNBResourceCoordinationInformation); type=7;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_E_RABs_AdmittedToBeModified_SgNBModConfList)) { type = 3; return true; }
-                       else if(equal(id_MeNBtoSgNBContainer)) { type = 4; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 5; return true; }
-                       else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 6; return true; }
-                       else if(equal(id_MeNBResourceCoordinationInformation)) { type = 7; return true; }
-                       else { type = 8; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_E_RABs_AdmittedToBeModified_SgNBModConfList);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_MeNBtoSgNBContainer);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(id_MeNBResourceCoordinationInformation);} return false;
-                       case 8: type = 8; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 8; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(ignore); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(ignore); type=2;}
-               void select_id_E_RABs_AdmittedToBeModified_SgNBModConfList() { set(ignore); type=3;}
-               void select_id_MeNBtoSgNBContainer() { set(ignore); type=4;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=5;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(ignore); type=6;}
-               void select_id_MeNBResourceCoordinationInformation() { set(ignore); type=7;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else if(equal(ignore)) { type = 5; return true; }
-                       else if(equal(ignore)) { type = 6; return true; }
-                       else if(equal(ignore)) { type = 7; return true; }
-                       else { type = 8; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 8: type = 8; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set<SgNB_UE_X2AP_ID>(2); }
-               SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get<SgNB_UE_X2AP_ID>(2); }
-               E_RABs_AdmittedToBeModified_SgNBModConfList& select_id_E_RABs_AdmittedToBeModified_SgNBModConfList() { return set<E_RABs_AdmittedToBeModified_SgNBModConfList>(3); }
-               E_RABs_AdmittedToBeModified_SgNBModConfList const* get_id_E_RABs_AdmittedToBeModified_SgNBModConfList() const { return get<E_RABs_AdmittedToBeModified_SgNBModConfList>(3); }
-               MeNBtoSgNBContainer& select_id_MeNBtoSgNBContainer() { return set<MeNBtoSgNBContainer>(4); }
-               MeNBtoSgNBContainer const* get_id_MeNBtoSgNBContainer() const { return get<MeNBtoSgNBContainer>(4); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(5); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(5); }
-               UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(6); }
-               UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(6); }
-               MeNBResourceCoordinationInformation& select_id_MeNBResourceCoordinationInformation() { return set<MeNBResourceCoordinationInformation>(7); }
-               MeNBResourceCoordinationInformation const* get_id_MeNBResourceCoordinationInformation() const { return get<MeNBResourceCoordinationInformation>(7); }
-               bool is_unknown() const { return type == 8; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<SgNB_UE_X2AP_ID>(); break;
-                       case 3: var.destroy<E_RABs_AdmittedToBeModified_SgNBModConfList>(); break;
-                       case 4: var.destroy<MeNBtoSgNBContainer>(); break;
-                       case 5: var.destroy<CriticalityDiagnostics>(); break;
-                       case 6: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 7: var.destroy<MeNBResourceCoordinationInformation>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<SgNB_UE_X2AP_ID>(2);
-                       v.template operator()<E_RABs_AdmittedToBeModified_SgNBModConfList>(3);
-                       v.template operator()<MeNBtoSgNBContainer>(4);
-                       v.template operator()<CriticalityDiagnostics>(5);
-                       v.template operator()<UE_X2AP_ID_Extension>(6);
-                       v.template operator()<MeNBResourceCoordinationInformation>(7);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_MeNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_SgNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_E_RABs_AdmittedToBeModified_SgNBModConfList()); return true;
-                       case 4: v(select_id_MeNBtoSgNBContainer()); return true;
-                       case 5: v(select_id_CriticalityDiagnostics()); return true;
-                       case 6: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true;
-                       case 7: v(select_id_MeNBResourceCoordinationInformation()); return true;
-                       case 8: if(type != 8) {clear(); asn::base::set();} type = 8; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<SgNB_UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<E_RABs_AdmittedToBeModified_SgNBModConfList>()); return true;
-                       case 4: v(var.as<MeNBtoSgNBContainer>()); return true;
-                       case 5: v(var.as<CriticalityDiagnostics>()); return true;
-                       case 6: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 7: v(var.as<MeNBResourceCoordinationInformation>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(CriticalityDiagnostics)];
-                       char dummy2[sizeof(E_RABs_AdmittedToBeModified_SgNBModConfList)];
-                       char dummy3[sizeof(MeNBResourceCoordinationInformation)];
-                       char dummy4[sizeof(MeNBtoSgNBContainer)];
-                       char dummy5[sizeof(SgNB_UE_X2AP_ID)];
-                       char dummy6[sizeof(UE_X2AP_ID)];
-                       char dummy7[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 8; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(mandatory); type=2;}
-               void select_id_E_RABs_AdmittedToBeModified_SgNBModConfList() { set(optional); type=3;}
-               void select_id_MeNBtoSgNBContainer() { set(optional); type=4;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=5;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=6;}
-               void select_id_MeNBResourceCoordinationInformation() { set(optional); type=7;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(optional)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else if(equal(optional)) { type = 6; return true; }
-                       else if(equal(optional)) { type = 7; return true; }
-                       else { type = 8; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 8: type = 8; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-SgNBModificationConfirm ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{SgNBModificationConfirm-IEs}},
-       ...
-}
-*/
-
-struct SgNBModificationConfirm : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "SgNBModificationConfirm";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<SgNBModificationConfirm_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<SgNBModificationConfirm_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-SgNBModificationRefuse-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-MeNB-UE-X2AP-ID                                         CRITICALITY ignore      TYPE UE-X2AP-ID                                 PRESENCE mandatory}|
-       { ID id-SgNB-UE-X2AP-ID                                         CRITICALITY ignore      TYPE SgNB-UE-X2AP-ID                            PRESENCE mandatory}|
-       { ID id-Cause                                                           CRITICALITY ignore      TYPE Cause                                              PRESENCE mandatory}|
-       { ID id-MeNBtoSgNBContainer                                     CRITICALITY ignore      TYPE MeNBtoSgNBContainer                        PRESENCE optional}|
-       { ID id-CriticalityDiagnostics                          CRITICALITY ignore      TYPE CriticalityDiagnostics             PRESENCE optional}|
-       { ID id-MeNB-UE-X2AP-ID-Extension                       CRITICALITY ignore      TYPE UE-X2AP-ID-Extension               PRESENCE optional},
-       ...
-}
-*/
-
-struct SgNBModificationRefuse_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 7; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;}
-               void select_id_Cause() { set(id_Cause); type=3;}
-               void select_id_MeNBtoSgNBContainer() { set(id_MeNBtoSgNBContainer); type=4;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=5;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=6;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_Cause)) { type = 3; return true; }
-                       else if(equal(id_MeNBtoSgNBContainer)) { type = 4; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 5; return true; }
-                       else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 6; return true; }
-                       else { type = 7; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_MeNBtoSgNBContainer);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false;
-                       case 7: type = 7; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 7; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(ignore); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(ignore); type=2;}
-               void select_id_Cause() { set(ignore); type=3;}
-               void select_id_MeNBtoSgNBContainer() { set(ignore); type=4;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=5;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(ignore); type=6;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else if(equal(ignore)) { type = 5; return true; }
-                       else if(equal(ignore)) { type = 6; return true; }
-                       else { type = 7; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 7: type = 7; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set<SgNB_UE_X2AP_ID>(2); }
-               SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get<SgNB_UE_X2AP_ID>(2); }
-               Cause& select_id_Cause() { return set<Cause>(3); }
-               Cause const* get_id_Cause() const { return get<Cause>(3); }
-               MeNBtoSgNBContainer& select_id_MeNBtoSgNBContainer() { return set<MeNBtoSgNBContainer>(4); }
-               MeNBtoSgNBContainer const* get_id_MeNBtoSgNBContainer() const { return get<MeNBtoSgNBContainer>(4); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(5); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(5); }
-               UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(6); }
-               UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(6); }
-               bool is_unknown() const { return type == 7; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<SgNB_UE_X2AP_ID>(); break;
-                       case 3: var.destroy<Cause>(); break;
-                       case 4: var.destroy<MeNBtoSgNBContainer>(); break;
-                       case 5: var.destroy<CriticalityDiagnostics>(); break;
-                       case 6: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<SgNB_UE_X2AP_ID>(2);
-                       v.template operator()<Cause>(3);
-                       v.template operator()<MeNBtoSgNBContainer>(4);
-                       v.template operator()<CriticalityDiagnostics>(5);
-                       v.template operator()<UE_X2AP_ID_Extension>(6);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_MeNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_SgNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_Cause()); return true;
-                       case 4: v(select_id_MeNBtoSgNBContainer()); return true;
-                       case 5: v(select_id_CriticalityDiagnostics()); return true;
-                       case 6: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true;
-                       case 7: if(type != 7) {clear(); asn::base::set();} type = 7; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<SgNB_UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<Cause>()); return true;
-                       case 4: v(var.as<MeNBtoSgNBContainer>()); return true;
-                       case 5: v(var.as<CriticalityDiagnostics>()); return true;
-                       case 6: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(Cause)];
-                       char dummy2[sizeof(CriticalityDiagnostics)];
-                       char dummy3[sizeof(MeNBtoSgNBContainer)];
-                       char dummy4[sizeof(SgNB_UE_X2AP_ID)];
-                       char dummy5[sizeof(UE_X2AP_ID)];
-                       char dummy6[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 7; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(mandatory); type=2;}
-               void select_id_Cause() { set(mandatory); type=3;}
-               void select_id_MeNBtoSgNBContainer() { set(optional); type=4;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=5;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=6;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else if(equal(optional)) { type = 6; return true; }
-                       else { type = 7; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 7: type = 7; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-SgNBModificationRefuse ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container            {{SgNBModificationRefuse-IEs}},
-       ...
-}
-*/
-
-struct SgNBModificationRefuse : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "SgNBModificationRefuse";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<SgNBModificationRefuse_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<SgNBModificationRefuse_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-UE-ContextInformationSgNBModReqExtIEs X2AP-PROTOCOL-EXTENSION ::= {
-       {       ID id-SubscriberProfileIDforRFP                                 CRITICALITY ignore      EXTENSION SubscriberProfileIDforRFP                                                                     PRESENCE optional},
-       ...
-}
-*/
-
-struct UE_ContextInformationSgNBModReqExtIEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_SubscriberProfileIDforRFP() { set(id_SubscriberProfileIDforRFP); type=1;}
-               X2AP_PROTOCOL_EXTENSION::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_SubscriberProfileIDforRFP)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_SubscriberProfileIDforRFP);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_SubscriberProfileIDforRFP() { set(ignore); type=1;}
-               X2AP_PROTOCOL_EXTENSION::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Extension_t : asn::typefield<true>
-       {
-               ~Extension_t()  {clear();}
-               size_t get_index() const {return type;}
-               SubscriberProfileIDforRFP& select_id_SubscriberProfileIDforRFP() { return set<SubscriberProfileIDforRFP>(1); }
-               SubscriberProfileIDforRFP const* get_id_SubscriberProfileIDforRFP() const { return get<SubscriberProfileIDforRFP>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<SubscriberProfileIDforRFP>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<SubscriberProfileIDforRFP>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_SubscriberProfileIDforRFP()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<SubscriberProfileIDforRFP>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(SubscriberProfileIDforRFP)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_EXTENSION::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_SubscriberProfileIDforRFP() { set(optional); type=1;}
-               X2AP_PROTOCOL_EXTENSION::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(optional)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-UE-ContextInformation-SgNBModReq ::= SEQUENCE {
-       nRUE-SecurityCapabilities               NRUESecurityCapabilities                                                                                                                        OPTIONAL,
-       sgNB-SecurityKey                                SgNBSecurityKey                                                                                                                                         OPTIONAL,
-       sgNBUEAggregateMaximumBitRate   UEAggregateMaximumBitRate                                                                                                                       OPTIONAL,
-       e-RABs-ToBeAdded                                E-RABs-ToBeAdded-SgNBModReq-List                                                                                                        OPTIONAL,
-       e-RABs-ToBeModified                             E-RABs-ToBeModified-SgNBModReq-List                                                                                                     OPTIONAL,
-       e-RABs-ToBeReleased                             E-RABs-ToBeReleased-SgNBModReq-List                                                                                                     OPTIONAL,
-       iE-Extensions                                   ProtocolExtensionContainer { {UE-ContextInformationSgNBModReqExtIEs} }                  OPTIONAL,
-       ...
-}
-*/
-
-struct UE_ContextInformation_SgNBModReq : asn::sequence<7, 0, true, 7>
-{
-       static constexpr const char* name() {return "UE-ContextInformation-SgNBModReq";}
-       using parent_t = asn::sequence<7, 0, true, 7>;
-       struct nRUE_SecurityCapabilities_t : NRUESecurityCapabilities
-       {
-               static constexpr const char* name() {return "nRUE_SecurityCapabilities_t";}
-               using parent_t = NRUESecurityCapabilities;
-               static constexpr bool optional = true;
-
-       };
-       nRUE_SecurityCapabilities_t& set_nRUE_SecurityCapabilities() { nRUE_SecurityCapabilities.setpresent(true); return nRUE_SecurityCapabilities;}
-       nRUE_SecurityCapabilities_t const* get_nRUE_SecurityCapabilities() const {return nRUE_SecurityCapabilities.is_valid() ? &nRUE_SecurityCapabilities : nullptr;}
-       struct sgNB_SecurityKey_t : SgNBSecurityKey
-       {
-               static constexpr const char* name() {return "sgNB_SecurityKey_t";}
-               using parent_t = SgNBSecurityKey;
-               static constexpr bool optional = true;
-
-       };
-       sgNB_SecurityKey_t& set_sgNB_SecurityKey() { sgNB_SecurityKey.setpresent(true); return sgNB_SecurityKey;}
-       sgNB_SecurityKey_t const* get_sgNB_SecurityKey() const {return sgNB_SecurityKey.is_valid() ? &sgNB_SecurityKey : nullptr;}
-       struct sgNBUEAggregateMaximumBitRate_t : UEAggregateMaximumBitRate
-       {
-               static constexpr const char* name() {return "sgNBUEAggregateMaximumBitRate_t";}
-               using parent_t = UEAggregateMaximumBitRate;
-               static constexpr bool optional = true;
-
-       };
-       sgNBUEAggregateMaximumBitRate_t& set_sgNBUEAggregateMaximumBitRate() { sgNBUEAggregateMaximumBitRate.setpresent(true); return sgNBUEAggregateMaximumBitRate;}
-       sgNBUEAggregateMaximumBitRate_t const* get_sgNBUEAggregateMaximumBitRate() const {return sgNBUEAggregateMaximumBitRate.is_valid() ? &sgNBUEAggregateMaximumBitRate : nullptr;}
-       struct e_RABs_ToBeAdded_t : E_RABs_ToBeAdded_SgNBModReq_List
-       {
-               static constexpr const char* name() {return "e_RABs_ToBeAdded_t";}
-               using parent_t = E_RABs_ToBeAdded_SgNBModReq_List;
-               static constexpr bool optional = true;
-
-       };
-       e_RABs_ToBeAdded_t& set_e_RABs_ToBeAdded() { e_RABs_ToBeAdded.setpresent(true); return e_RABs_ToBeAdded;}
-       e_RABs_ToBeAdded_t const* get_e_RABs_ToBeAdded() const {return e_RABs_ToBeAdded.is_valid() ? &e_RABs_ToBeAdded : nullptr;}
-       struct e_RABs_ToBeModified_t : E_RABs_ToBeModified_SgNBModReq_List
-       {
-               static constexpr const char* name() {return "e_RABs_ToBeModified_t";}
-               using parent_t = E_RABs_ToBeModified_SgNBModReq_List;
-               static constexpr bool optional = true;
-
-       };
-       e_RABs_ToBeModified_t& set_e_RABs_ToBeModified() { e_RABs_ToBeModified.setpresent(true); return e_RABs_ToBeModified;}
-       e_RABs_ToBeModified_t const* get_e_RABs_ToBeModified() const {return e_RABs_ToBeModified.is_valid() ? &e_RABs_ToBeModified : nullptr;}
-       struct e_RABs_ToBeReleased_t : E_RABs_ToBeReleased_SgNBModReq_List
-       {
-               static constexpr const char* name() {return "e_RABs_ToBeReleased_t";}
-               using parent_t = E_RABs_ToBeReleased_SgNBModReq_List;
-               static constexpr bool optional = true;
-
-       };
-       e_RABs_ToBeReleased_t& set_e_RABs_ToBeReleased() { e_RABs_ToBeReleased.setpresent(true); return e_RABs_ToBeReleased;}
-       e_RABs_ToBeReleased_t const* get_e_RABs_ToBeReleased() const {return e_RABs_ToBeReleased.is_valid() ? &e_RABs_ToBeReleased : nullptr;}
-       struct iE_Extensions_t : ProtocolExtensionContainer<UE_ContextInformationSgNBModReqExtIEs>
-       {
-               static constexpr const char* name() {return "iE_Extensions_t";}
-               using parent_t = ProtocolExtensionContainer<UE_ContextInformationSgNBModReqExtIEs>;
-               static constexpr bool optional = true;
-
-       };
-       iE_Extensions_t& set_iE_Extensions() { iE_Extensions.setpresent(true); return iE_Extensions;}
-       iE_Extensions_t const* get_iE_Extensions() const {return iE_Extensions.is_valid() ? &iE_Extensions : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(nRUE_SecurityCapabilities);
-               v(sgNB_SecurityKey);
-               v(sgNBUEAggregateMaximumBitRate);
-               v(e_RABs_ToBeAdded);
-               v(e_RABs_ToBeModified);
-               v(e_RABs_ToBeReleased);
-               v(iE_Extensions);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(nRUE_SecurityCapabilities);
-               v(sgNB_SecurityKey);
-               v(sgNBUEAggregateMaximumBitRate);
-               v(e_RABs_ToBeAdded);
-               v(e_RABs_ToBeModified);
-               v(e_RABs_ToBeReleased);
-               v(iE_Extensions);
-
-       };
-       void clear()
-       {
-               nRUE_SecurityCapabilities.clear();
-               sgNB_SecurityKey.clear();
-               sgNBUEAggregateMaximumBitRate.clear();
-               e_RABs_ToBeAdded.clear();
-               e_RABs_ToBeModified.clear();
-               e_RABs_ToBeReleased.clear();
-               iE_Extensions.clear();
-
-       };
-       private:
-       nRUE_SecurityCapabilities_t     nRUE_SecurityCapabilities;
-       sgNB_SecurityKey_t      sgNB_SecurityKey;
-       sgNBUEAggregateMaximumBitRate_t sgNBUEAggregateMaximumBitRate;
-       e_RABs_ToBeAdded_t      e_RABs_ToBeAdded;
-       e_RABs_ToBeModified_t   e_RABs_ToBeModified;
-       e_RABs_ToBeReleased_t   e_RABs_ToBeReleased;
-       iE_Extensions_t iE_Extensions;
-
-};
-/*
-SgNBModificationRequest-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-MeNB-UE-X2AP-ID                                         CRITICALITY reject      TYPE UE-X2AP-ID                                                                 PRESENCE mandatory}|
-       { ID id-SgNB-UE-X2AP-ID                                         CRITICALITY reject      TYPE SgNB-UE-X2AP-ID                                                    PRESENCE mandatory}|
-       { ID id-Cause                                                           CRITICALITY ignore      TYPE Cause                                                                              PRESENCE mandatory}|
-       { ID id-SelectedPLMN                                            CRITICALITY ignore      TYPE PLMN-Identity                                                              PRESENCE optional}|
-       { ID id-HandoverRestrictionList                         CRITICALITY ignore      TYPE HandoverRestrictionList                                    PRESENCE optional}|
-       { ID    id-SCGConfigurationQuery                        CRITICALITY ignore      TYPE SCGConfigurationQuery                                              PRESENCE optional}|
-       { ID id-UE-ContextInformation-SgNBModReq        CRITICALITY reject      TYPE UE-ContextInformation-SgNBModReq           PRESENCE optional}|
-       { ID id-MeNBtoSgNBContainer                                     CRITICALITY reject      TYPE MeNBtoSgNBContainer                                                PRESENCE optional}|
-       { ID id-MeNB-UE-X2AP-ID-Extension                       CRITICALITY reject      TYPE UE-X2AP-ID-Extension                                               PRESENCE optional}|
-       { ID id-MeNBResourceCoordinationInformation     CRITICALITY ignore      TYPE MeNBResourceCoordinationInformation        PRESENCE optional}|
-       { ID id-RequestedSplitSRBs                                      CRITICALITY ignore      TYPE SplitSRBs                                                                  PRESENCE optional}|
-       { ID id-RequestedSplitSRBsrelease                       CRITICALITY ignore      TYPE SplitSRBs                                                                  PRESENCE optional},
-       ...
-}
-*/
-
-struct SgNBModificationRequest_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 13; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;}
-               void select_id_Cause() { set(id_Cause); type=3;}
-               void select_id_SelectedPLMN() { set(id_SelectedPLMN); type=4;}
-               void select_id_HandoverRestrictionList() { set(id_HandoverRestrictionList); type=5;}
-               void select_id_SCGConfigurationQuery() { set(id_SCGConfigurationQuery); type=6;}
-               void select_id_UE_ContextInformation_SgNBModReq() { set(id_UE_ContextInformation_SgNBModReq); type=7;}
-               void select_id_MeNBtoSgNBContainer() { set(id_MeNBtoSgNBContainer); type=8;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=9;}
-               void select_id_MeNBResourceCoordinationInformation() { set(id_MeNBResourceCoordinationInformation); type=10;}
-               void select_id_RequestedSplitSRBs() { set(id_RequestedSplitSRBs); type=11;}
-               void select_id_RequestedSplitSRBsrelease() { set(id_RequestedSplitSRBsrelease); type=12;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_Cause)) { type = 3; return true; }
-                       else if(equal(id_SelectedPLMN)) { type = 4; return true; }
-                       else if(equal(id_HandoverRestrictionList)) { type = 5; return true; }
-                       else if(equal(id_SCGConfigurationQuery)) { type = 6; return true; }
-                       else if(equal(id_UE_ContextInformation_SgNBModReq)) { type = 7; return true; }
-                       else if(equal(id_MeNBtoSgNBContainer)) { type = 8; return true; }
-                       else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 9; return true; }
-                       else if(equal(id_MeNBResourceCoordinationInformation)) { type = 10; return true; }
-                       else if(equal(id_RequestedSplitSRBs)) { type = 11; return true; }
-                       else if(equal(id_RequestedSplitSRBsrelease)) { type = 12; return true; }
-                       else { type = 13; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_SelectedPLMN);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_HandoverRestrictionList);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(id_SCGConfigurationQuery);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(id_UE_ContextInformation_SgNBModReq);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(id_MeNBtoSgNBContainer);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(id_MeNBResourceCoordinationInformation);} return false;
-                       case 11: type = 11; if(v(ref_nested())) { return equal(id_RequestedSplitSRBs);} return false;
-                       case 12: type = 12; if(v(ref_nested())) { return equal(id_RequestedSplitSRBsrelease);} return false;
-                       case 13: type = 13; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 13; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(reject); type=2;}
-               void select_id_Cause() { set(ignore); type=3;}
-               void select_id_SelectedPLMN() { set(ignore); type=4;}
-               void select_id_HandoverRestrictionList() { set(ignore); type=5;}
-               void select_id_SCGConfigurationQuery() { set(ignore); type=6;}
-               void select_id_UE_ContextInformation_SgNBModReq() { set(reject); type=7;}
-               void select_id_MeNBtoSgNBContainer() { set(reject); type=8;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=9;}
-               void select_id_MeNBResourceCoordinationInformation() { set(ignore); type=10;}
-               void select_id_RequestedSplitSRBs() { set(ignore); type=11;}
-               void select_id_RequestedSplitSRBsrelease() { set(ignore); type=12;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else if(equal(ignore)) { type = 5; return true; }
-                       else if(equal(ignore)) { type = 6; return true; }
-                       else if(equal(reject)) { type = 7; return true; }
-                       else if(equal(reject)) { type = 8; return true; }
-                       else if(equal(reject)) { type = 9; return true; }
-                       else if(equal(ignore)) { type = 10; return true; }
-                       else if(equal(ignore)) { type = 11; return true; }
-                       else if(equal(ignore)) { type = 12; return true; }
-                       else { type = 13; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 11: type = 11; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 12: type = 12; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 13: type = 13; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set<SgNB_UE_X2AP_ID>(2); }
-               SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get<SgNB_UE_X2AP_ID>(2); }
-               Cause& select_id_Cause() { return set<Cause>(3); }
-               Cause const* get_id_Cause() const { return get<Cause>(3); }
-               PLMN_Identity& select_id_SelectedPLMN() { return set<PLMN_Identity>(4); }
-               PLMN_Identity const* get_id_SelectedPLMN() const { return get<PLMN_Identity>(4); }
-               HandoverRestrictionList& select_id_HandoverRestrictionList() { return set<HandoverRestrictionList>(5); }
-               HandoverRestrictionList const* get_id_HandoverRestrictionList() const { return get<HandoverRestrictionList>(5); }
-               SCGConfigurationQuery& select_id_SCGConfigurationQuery() { return set<SCGConfigurationQuery>(6); }
-               SCGConfigurationQuery const* get_id_SCGConfigurationQuery() const { return get<SCGConfigurationQuery>(6); }
-               UE_ContextInformation_SgNBModReq& select_id_UE_ContextInformation_SgNBModReq() { return set<UE_ContextInformation_SgNBModReq>(7); }
-               UE_ContextInformation_SgNBModReq const* get_id_UE_ContextInformation_SgNBModReq() const { return get<UE_ContextInformation_SgNBModReq>(7); }
-               MeNBtoSgNBContainer& select_id_MeNBtoSgNBContainer() { return set<MeNBtoSgNBContainer>(8); }
-               MeNBtoSgNBContainer const* get_id_MeNBtoSgNBContainer() const { return get<MeNBtoSgNBContainer>(8); }
-               UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(9); }
-               UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(9); }
-               MeNBResourceCoordinationInformation& select_id_MeNBResourceCoordinationInformation() { return set<MeNBResourceCoordinationInformation>(10); }
-               MeNBResourceCoordinationInformation const* get_id_MeNBResourceCoordinationInformation() const { return get<MeNBResourceCoordinationInformation>(10); }
-               SplitSRBs& select_id_RequestedSplitSRBs() { return set<SplitSRBs>(11); }
-               SplitSRBs const* get_id_RequestedSplitSRBs() const { return get<SplitSRBs>(11); }
-               SplitSRBs& select_id_RequestedSplitSRBsrelease() { return set<SplitSRBs>(12); }
-               SplitSRBs const* get_id_RequestedSplitSRBsrelease() const { return get<SplitSRBs>(12); }
-               bool is_unknown() const { return type == 13; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<SgNB_UE_X2AP_ID>(); break;
-                       case 3: var.destroy<Cause>(); break;
-                       case 4: var.destroy<PLMN_Identity>(); break;
-                       case 5: var.destroy<HandoverRestrictionList>(); break;
-                       case 6: var.destroy<SCGConfigurationQuery>(); break;
-                       case 7: var.destroy<UE_ContextInformation_SgNBModReq>(); break;
-                       case 8: var.destroy<MeNBtoSgNBContainer>(); break;
-                       case 9: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 10: var.destroy<MeNBResourceCoordinationInformation>(); break;
-                       case 11: var.destroy<SplitSRBs>(); break;
-                       case 12: var.destroy<SplitSRBs>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<SgNB_UE_X2AP_ID>(2);
-                       v.template operator()<Cause>(3);
-                       v.template operator()<PLMN_Identity>(4);
-                       v.template operator()<HandoverRestrictionList>(5);
-                       v.template operator()<SCGConfigurationQuery>(6);
-                       v.template operator()<UE_ContextInformation_SgNBModReq>(7);
-                       v.template operator()<MeNBtoSgNBContainer>(8);
-                       v.template operator()<UE_X2AP_ID_Extension>(9);
-                       v.template operator()<MeNBResourceCoordinationInformation>(10);
-                       v.template operator()<SplitSRBs>(11);
-                       v.template operator()<SplitSRBs>(12);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_MeNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_SgNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_Cause()); return true;
-                       case 4: v(select_id_SelectedPLMN()); return true;
-                       case 5: v(select_id_HandoverRestrictionList()); return true;
-                       case 6: v(select_id_SCGConfigurationQuery()); return true;
-                       case 7: v(select_id_UE_ContextInformation_SgNBModReq()); return true;
-                       case 8: v(select_id_MeNBtoSgNBContainer()); return true;
-                       case 9: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true;
-                       case 10: v(select_id_MeNBResourceCoordinationInformation()); return true;
-                       case 11: v(select_id_RequestedSplitSRBs()); return true;
-                       case 12: v(select_id_RequestedSplitSRBsrelease()); return true;
-                       case 13: if(type != 13) {clear(); asn::base::set();} type = 13; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<SgNB_UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<Cause>()); return true;
-                       case 4: v(var.as<PLMN_Identity>()); return true;
-                       case 5: v(var.as<HandoverRestrictionList>()); return true;
-                       case 6: v(var.as<SCGConfigurationQuery>()); return true;
-                       case 7: v(var.as<UE_ContextInformation_SgNBModReq>()); return true;
-                       case 8: v(var.as<MeNBtoSgNBContainer>()); return true;
-                       case 9: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 10: v(var.as<MeNBResourceCoordinationInformation>()); return true;
-                       case 11: v(var.as<SplitSRBs>()); return true;
-                       case 12: v(var.as<SplitSRBs>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(Cause)];
-                       char dummy2[sizeof(HandoverRestrictionList)];
-                       char dummy3[sizeof(MeNBResourceCoordinationInformation)];
-                       char dummy4[sizeof(MeNBtoSgNBContainer)];
-                       char dummy5[sizeof(PLMN_Identity)];
-                       char dummy6[sizeof(SCGConfigurationQuery)];
-                       char dummy7[sizeof(SgNB_UE_X2AP_ID)];
-                       char dummy8[sizeof(SplitSRBs)];
-                       char dummy9[sizeof(UE_ContextInformation_SgNBModReq)];
-                       char dummy10[sizeof(UE_X2AP_ID)];
-                       char dummy11[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 13; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(mandatory); type=2;}
-               void select_id_Cause() { set(mandatory); type=3;}
-               void select_id_SelectedPLMN() { set(optional); type=4;}
-               void select_id_HandoverRestrictionList() { set(optional); type=5;}
-               void select_id_SCGConfigurationQuery() { set(optional); type=6;}
-               void select_id_UE_ContextInformation_SgNBModReq() { set(optional); type=7;}
-               void select_id_MeNBtoSgNBContainer() { set(optional); type=8;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=9;}
-               void select_id_MeNBResourceCoordinationInformation() { set(optional); type=10;}
-               void select_id_RequestedSplitSRBs() { set(optional); type=11;}
-               void select_id_RequestedSplitSRBsrelease() { set(optional); type=12;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else if(equal(optional)) { type = 6; return true; }
-                       else if(equal(optional)) { type = 7; return true; }
-                       else if(equal(optional)) { type = 8; return true; }
-                       else if(equal(optional)) { type = 9; return true; }
-                       else if(equal(optional)) { type = 10; return true; }
-                       else if(equal(optional)) { type = 11; return true; }
-                       else if(equal(optional)) { type = 12; return true; }
-                       else { type = 13; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 11: type = 11; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 12: type = 12; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 13: type = 13; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-SgNBModificationRequest ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{ SgNBModificationRequest-IEs}},
-       ...
-}
-*/
-
-struct SgNBModificationRequest : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "SgNBModificationRequest";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<SgNBModificationRequest_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<SgNBModificationRequest_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-SgNBModificationRequestAcknowledge-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-MeNB-UE-X2AP-ID                                                         CRITICALITY ignore      TYPE UE-X2AP-ID                                                                                                 PRESENCE mandatory}|
-       { ID id-SgNB-UE-X2AP-ID                                                         CRITICALITY ignore      TYPE SgNB-UE-X2AP-ID                                                                                            PRESENCE mandatory}|
-       { ID id-E-RABs-Admitted-ToBeAdded-SgNBModAckList                CRITICALITY ignore      TYPE E-RABs-Admitted-ToBeAdded-SgNBModAckList                   PRESENCE optional}|
-       { ID id-E-RABs-Admitted-ToBeModified-SgNBModAckList     CRITICALITY ignore      TYPE E-RABs-Admitted-ToBeModified-SgNBModAckList                PRESENCE optional}|
-       { ID id-E-RABs-Admitted-ToBeReleased-SgNBModAckList     CRITICALITY ignore      TYPE E-RABs-Admitted-ToBeReleased-SgNBModAckList                PRESENCE optional}|
-       { ID id-E-RABs-NotAdmitted-List                                         CRITICALITY ignore      TYPE E-RAB-List                                                                                                 PRESENCE optional}|
-       { ID id-SgNBtoMeNBContainer                                                     CRITICALITY ignore      TYPE SgNBtoMeNBContainer                                                                                PRESENCE optional}|
-       { ID id-CriticalityDiagnostics                                          CRITICALITY ignore      TYPE CriticalityDiagnostics                                                                     PRESENCE optional}|
-       { ID id-MeNB-UE-X2AP-ID-Extension                                       CRITICALITY ignore      TYPE UE-X2AP-ID-Extension                                                                       PRESENCE optional}|
-       { ID id-SgNBResourceCoordinationInformation                     CRITICALITY ignore      TYPE SgNBResourceCoordinationInformation                                PRESENCE optional}|
-       { ID id-AdmittedSplitSRBs                                                       CRITICALITY ignore      TYPE SplitSRBs                                                                                                  PRESENCE optional}|
-       { ID id-AdmittedSplitSRBsrelease                                                CRITICALITY ignore      TYPE SplitSRBs                                                                                                  PRESENCE optional}|
-       { ID id-RRCConfigIndication                                                     CRITICALITY reject      TYPE RRC-Config-Ind                     PRESENCE optional},
-       ...
-}
-*/
-
-struct SgNBModificationRequestAcknowledge_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 14; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;}
-               void select_id_E_RABs_Admitted_ToBeAdded_SgNBModAckList() { set(id_E_RABs_Admitted_ToBeAdded_SgNBModAckList); type=3;}
-               void select_id_E_RABs_Admitted_ToBeModified_SgNBModAckList() { set(id_E_RABs_Admitted_ToBeModified_SgNBModAckList); type=4;}
-               void select_id_E_RABs_Admitted_ToBeReleased_SgNBModAckList() { set(id_E_RABs_Admitted_ToBeReleased_SgNBModAckList); type=5;}
-               void select_id_E_RABs_NotAdmitted_List() { set(id_E_RABs_NotAdmitted_List); type=6;}
-               void select_id_SgNBtoMeNBContainer() { set(id_SgNBtoMeNBContainer); type=7;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=8;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=9;}
-               void select_id_SgNBResourceCoordinationInformation() { set(id_SgNBResourceCoordinationInformation); type=10;}
-               void select_id_AdmittedSplitSRBs() { set(id_AdmittedSplitSRBs); type=11;}
-               void select_id_AdmittedSplitSRBsrelease() { set(id_AdmittedSplitSRBsrelease); type=12;}
-               void select_id_RRCConfigIndication() { set(id_RRCConfigIndication); type=13;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_E_RABs_Admitted_ToBeAdded_SgNBModAckList)) { type = 3; return true; }
-                       else if(equal(id_E_RABs_Admitted_ToBeModified_SgNBModAckList)) { type = 4; return true; }
-                       else if(equal(id_E_RABs_Admitted_ToBeReleased_SgNBModAckList)) { type = 5; return true; }
-                       else if(equal(id_E_RABs_NotAdmitted_List)) { type = 6; return true; }
-                       else if(equal(id_SgNBtoMeNBContainer)) { type = 7; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 8; return true; }
-                       else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 9; return true; }
-                       else if(equal(id_SgNBResourceCoordinationInformation)) { type = 10; return true; }
-                       else if(equal(id_AdmittedSplitSRBs)) { type = 11; return true; }
-                       else if(equal(id_AdmittedSplitSRBsrelease)) { type = 12; return true; }
-                       else if(equal(id_RRCConfigIndication)) { type = 13; return true; }
-                       else { type = 14; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_E_RABs_Admitted_ToBeAdded_SgNBModAckList);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_E_RABs_Admitted_ToBeModified_SgNBModAckList);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_E_RABs_Admitted_ToBeReleased_SgNBModAckList);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(id_E_RABs_NotAdmitted_List);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(id_SgNBtoMeNBContainer);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(id_SgNBResourceCoordinationInformation);} return false;
-                       case 11: type = 11; if(v(ref_nested())) { return equal(id_AdmittedSplitSRBs);} return false;
-                       case 12: type = 12; if(v(ref_nested())) { return equal(id_AdmittedSplitSRBsrelease);} return false;
-                       case 13: type = 13; if(v(ref_nested())) { return equal(id_RRCConfigIndication);} return false;
-                       case 14: type = 14; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 14; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(ignore); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(ignore); type=2;}
-               void select_id_E_RABs_Admitted_ToBeAdded_SgNBModAckList() { set(ignore); type=3;}
-               void select_id_E_RABs_Admitted_ToBeModified_SgNBModAckList() { set(ignore); type=4;}
-               void select_id_E_RABs_Admitted_ToBeReleased_SgNBModAckList() { set(ignore); type=5;}
-               void select_id_E_RABs_NotAdmitted_List() { set(ignore); type=6;}
-               void select_id_SgNBtoMeNBContainer() { set(ignore); type=7;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=8;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(ignore); type=9;}
-               void select_id_SgNBResourceCoordinationInformation() { set(ignore); type=10;}
-               void select_id_AdmittedSplitSRBs() { set(ignore); type=11;}
-               void select_id_AdmittedSplitSRBsrelease() { set(ignore); type=12;}
-               void select_id_RRCConfigIndication() { set(reject); type=13;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else if(equal(ignore)) { type = 5; return true; }
-                       else if(equal(ignore)) { type = 6; return true; }
-                       else if(equal(ignore)) { type = 7; return true; }
-                       else if(equal(ignore)) { type = 8; return true; }
-                       else if(equal(ignore)) { type = 9; return true; }
-                       else if(equal(ignore)) { type = 10; return true; }
-                       else if(equal(ignore)) { type = 11; return true; }
-                       else if(equal(ignore)) { type = 12; return true; }
-                       else if(equal(reject)) { type = 13; return true; }
-                       else { type = 14; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 11: type = 11; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 12: type = 12; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 13: type = 13; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 14: type = 14; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set<SgNB_UE_X2AP_ID>(2); }
-               SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get<SgNB_UE_X2AP_ID>(2); }
-               E_RABs_Admitted_ToBeAdded_SgNBModAckList& select_id_E_RABs_Admitted_ToBeAdded_SgNBModAckList() { return set<E_RABs_Admitted_ToBeAdded_SgNBModAckList>(3); }
-               E_RABs_Admitted_ToBeAdded_SgNBModAckList const* get_id_E_RABs_Admitted_ToBeAdded_SgNBModAckList() const { return get<E_RABs_Admitted_ToBeAdded_SgNBModAckList>(3); }
-               E_RABs_Admitted_ToBeModified_SgNBModAckList& select_id_E_RABs_Admitted_ToBeModified_SgNBModAckList() { return set<E_RABs_Admitted_ToBeModified_SgNBModAckList>(4); }
-               E_RABs_Admitted_ToBeModified_SgNBModAckList const* get_id_E_RABs_Admitted_ToBeModified_SgNBModAckList() const { return get<E_RABs_Admitted_ToBeModified_SgNBModAckList>(4); }
-               E_RABs_Admitted_ToBeReleased_SgNBModAckList& select_id_E_RABs_Admitted_ToBeReleased_SgNBModAckList() { return set<E_RABs_Admitted_ToBeReleased_SgNBModAckList>(5); }
-               E_RABs_Admitted_ToBeReleased_SgNBModAckList const* get_id_E_RABs_Admitted_ToBeReleased_SgNBModAckList() const { return get<E_RABs_Admitted_ToBeReleased_SgNBModAckList>(5); }
-               E_RAB_List& select_id_E_RABs_NotAdmitted_List() { return set<E_RAB_List>(6); }
-               E_RAB_List const* get_id_E_RABs_NotAdmitted_List() const { return get<E_RAB_List>(6); }
-               SgNBtoMeNBContainer& select_id_SgNBtoMeNBContainer() { return set<SgNBtoMeNBContainer>(7); }
-               SgNBtoMeNBContainer const* get_id_SgNBtoMeNBContainer() const { return get<SgNBtoMeNBContainer>(7); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(8); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(8); }
-               UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(9); }
-               UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(9); }
-               SgNBResourceCoordinationInformation& select_id_SgNBResourceCoordinationInformation() { return set<SgNBResourceCoordinationInformation>(10); }
-               SgNBResourceCoordinationInformation const* get_id_SgNBResourceCoordinationInformation() const { return get<SgNBResourceCoordinationInformation>(10); }
-               SplitSRBs& select_id_AdmittedSplitSRBs() { return set<SplitSRBs>(11); }
-               SplitSRBs const* get_id_AdmittedSplitSRBs() const { return get<SplitSRBs>(11); }
-               SplitSRBs& select_id_AdmittedSplitSRBsrelease() { return set<SplitSRBs>(12); }
-               SplitSRBs const* get_id_AdmittedSplitSRBsrelease() const { return get<SplitSRBs>(12); }
-               RRC_Config_Ind& select_id_RRCConfigIndication() { return set<RRC_Config_Ind>(13); }
-               RRC_Config_Ind const* get_id_RRCConfigIndication() const { return get<RRC_Config_Ind>(13); }
-               bool is_unknown() const { return type == 14; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<SgNB_UE_X2AP_ID>(); break;
-                       case 3: var.destroy<E_RABs_Admitted_ToBeAdded_SgNBModAckList>(); break;
-                       case 4: var.destroy<E_RABs_Admitted_ToBeModified_SgNBModAckList>(); break;
-                       case 5: var.destroy<E_RABs_Admitted_ToBeReleased_SgNBModAckList>(); break;
-                       case 6: var.destroy<E_RAB_List>(); break;
-                       case 7: var.destroy<SgNBtoMeNBContainer>(); break;
-                       case 8: var.destroy<CriticalityDiagnostics>(); break;
-                       case 9: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 10: var.destroy<SgNBResourceCoordinationInformation>(); break;
-                       case 11: var.destroy<SplitSRBs>(); break;
-                       case 12: var.destroy<SplitSRBs>(); break;
-                       case 13: var.destroy<RRC_Config_Ind>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<SgNB_UE_X2AP_ID>(2);
-                       v.template operator()<E_RABs_Admitted_ToBeAdded_SgNBModAckList>(3);
-                       v.template operator()<E_RABs_Admitted_ToBeModified_SgNBModAckList>(4);
-                       v.template operator()<E_RABs_Admitted_ToBeReleased_SgNBModAckList>(5);
-                       v.template operator()<E_RAB_List>(6);
-                       v.template operator()<SgNBtoMeNBContainer>(7);
-                       v.template operator()<CriticalityDiagnostics>(8);
-                       v.template operator()<UE_X2AP_ID_Extension>(9);
-                       v.template operator()<SgNBResourceCoordinationInformation>(10);
-                       v.template operator()<SplitSRBs>(11);
-                       v.template operator()<SplitSRBs>(12);
-                       v.template operator()<RRC_Config_Ind>(13);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_MeNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_SgNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_E_RABs_Admitted_ToBeAdded_SgNBModAckList()); return true;
-                       case 4: v(select_id_E_RABs_Admitted_ToBeModified_SgNBModAckList()); return true;
-                       case 5: v(select_id_E_RABs_Admitted_ToBeReleased_SgNBModAckList()); return true;
-                       case 6: v(select_id_E_RABs_NotAdmitted_List()); return true;
-                       case 7: v(select_id_SgNBtoMeNBContainer()); return true;
-                       case 8: v(select_id_CriticalityDiagnostics()); return true;
-                       case 9: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true;
-                       case 10: v(select_id_SgNBResourceCoordinationInformation()); return true;
-                       case 11: v(select_id_AdmittedSplitSRBs()); return true;
-                       case 12: v(select_id_AdmittedSplitSRBsrelease()); return true;
-                       case 13: v(select_id_RRCConfigIndication()); return true;
-                       case 14: if(type != 14) {clear(); asn::base::set();} type = 14; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<SgNB_UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<E_RABs_Admitted_ToBeAdded_SgNBModAckList>()); return true;
-                       case 4: v(var.as<E_RABs_Admitted_ToBeModified_SgNBModAckList>()); return true;
-                       case 5: v(var.as<E_RABs_Admitted_ToBeReleased_SgNBModAckList>()); return true;
-                       case 6: v(var.as<E_RAB_List>()); return true;
-                       case 7: v(var.as<SgNBtoMeNBContainer>()); return true;
-                       case 8: v(var.as<CriticalityDiagnostics>()); return true;
-                       case 9: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 10: v(var.as<SgNBResourceCoordinationInformation>()); return true;
-                       case 11: v(var.as<SplitSRBs>()); return true;
-                       case 12: v(var.as<SplitSRBs>()); return true;
-                       case 13: v(var.as<RRC_Config_Ind>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(CriticalityDiagnostics)];
-                       char dummy2[sizeof(E_RAB_List)];
-                       char dummy3[sizeof(E_RABs_Admitted_ToBeAdded_SgNBModAckList)];
-                       char dummy4[sizeof(E_RABs_Admitted_ToBeModified_SgNBModAckList)];
-                       char dummy5[sizeof(E_RABs_Admitted_ToBeReleased_SgNBModAckList)];
-                       char dummy6[sizeof(RRC_Config_Ind)];
-                       char dummy7[sizeof(SgNBResourceCoordinationInformation)];
-                       char dummy8[sizeof(SgNB_UE_X2AP_ID)];
-                       char dummy9[sizeof(SgNBtoMeNBContainer)];
-                       char dummy10[sizeof(SplitSRBs)];
-                       char dummy11[sizeof(UE_X2AP_ID)];
-                       char dummy12[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 14; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(mandatory); type=2;}
-               void select_id_E_RABs_Admitted_ToBeAdded_SgNBModAckList() { set(optional); type=3;}
-               void select_id_E_RABs_Admitted_ToBeModified_SgNBModAckList() { set(optional); type=4;}
-               void select_id_E_RABs_Admitted_ToBeReleased_SgNBModAckList() { set(optional); type=5;}
-               void select_id_E_RABs_NotAdmitted_List() { set(optional); type=6;}
-               void select_id_SgNBtoMeNBContainer() { set(optional); type=7;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=8;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=9;}
-               void select_id_SgNBResourceCoordinationInformation() { set(optional); type=10;}
-               void select_id_AdmittedSplitSRBs() { set(optional); type=11;}
-               void select_id_AdmittedSplitSRBsrelease() { set(optional); type=12;}
-               void select_id_RRCConfigIndication() { set(optional); type=13;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(optional)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else if(equal(optional)) { type = 6; return true; }
-                       else if(equal(optional)) { type = 7; return true; }
-                       else if(equal(optional)) { type = 8; return true; }
-                       else if(equal(optional)) { type = 9; return true; }
-                       else if(equal(optional)) { type = 10; return true; }
-                       else if(equal(optional)) { type = 11; return true; }
-                       else if(equal(optional)) { type = 12; return true; }
-                       else if(equal(optional)) { type = 13; return true; }
-                       else { type = 14; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 11: type = 11; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 12: type = 12; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 13: type = 13; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 14: type = 14; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-SgNBModificationRequestAcknowledge ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{SgNBModificationRequestAcknowledge-IEs}},
-       ...
-}
-*/
-
-struct SgNBModificationRequestAcknowledge : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "SgNBModificationRequestAcknowledge";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<SgNBModificationRequestAcknowledge_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<SgNBModificationRequestAcknowledge_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-SgNBModificationRequestReject-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-MeNB-UE-X2AP-ID                                         CRITICALITY ignore      TYPE UE-X2AP-ID                                 PRESENCE mandatory}|
-       { ID id-SgNB-UE-X2AP-ID                                         CRITICALITY ignore      TYPE SgNB-UE-X2AP-ID                            PRESENCE mandatory}|
-       { ID id-Cause                                                           CRITICALITY ignore      TYPE Cause                                              PRESENCE mandatory}|
-       { ID id-CriticalityDiagnostics                          CRITICALITY ignore      TYPE CriticalityDiagnostics             PRESENCE optional}|
-       { ID id-MeNB-UE-X2AP-ID-Extension                       CRITICALITY ignore      TYPE UE-X2AP-ID-Extension               PRESENCE optional},
-       ...
-}
-*/
-
-struct SgNBModificationRequestReject_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;}
-               void select_id_Cause() { set(id_Cause); type=3;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=4;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=5;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_Cause)) { type = 3; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 4; return true; }
-                       else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(ignore); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(ignore); type=2;}
-               void select_id_Cause() { set(ignore); type=3;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=4;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(ignore); type=5;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else if(equal(ignore)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set<SgNB_UE_X2AP_ID>(2); }
-               SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get<SgNB_UE_X2AP_ID>(2); }
-               Cause& select_id_Cause() { return set<Cause>(3); }
-               Cause const* get_id_Cause() const { return get<Cause>(3); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(4); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(4); }
-               UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(5); }
-               UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(5); }
-               bool is_unknown() const { return type == 6; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<SgNB_UE_X2AP_ID>(); break;
-                       case 3: var.destroy<Cause>(); break;
-                       case 4: var.destroy<CriticalityDiagnostics>(); break;
-                       case 5: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<SgNB_UE_X2AP_ID>(2);
-                       v.template operator()<Cause>(3);
-                       v.template operator()<CriticalityDiagnostics>(4);
-                       v.template operator()<UE_X2AP_ID_Extension>(5);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_MeNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_SgNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_Cause()); return true;
-                       case 4: v(select_id_CriticalityDiagnostics()); return true;
-                       case 5: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true;
-                       case 6: if(type != 6) {clear(); asn::base::set();} type = 6; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<SgNB_UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<Cause>()); return true;
-                       case 4: v(var.as<CriticalityDiagnostics>()); return true;
-                       case 5: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(Cause)];
-                       char dummy2[sizeof(CriticalityDiagnostics)];
-                       char dummy3[sizeof(SgNB_UE_X2AP_ID)];
-                       char dummy4[sizeof(UE_X2AP_ID)];
-                       char dummy5[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(mandatory); type=2;}
-               void select_id_Cause() { set(mandatory); type=3;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=4;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=5;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-SgNBModificationRequestReject ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{SgNBModificationRequestReject-IEs}},
-       ...
-}
-*/
-
-struct SgNBModificationRequestReject : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "SgNBModificationRequestReject";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<SgNBModificationRequestReject_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<SgNBModificationRequestReject_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-SgNBModificationRequired-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-MeNB-UE-X2AP-ID                                                 CRITICALITY reject      TYPE UE-X2AP-ID                                                                         PRESENCE mandatory}|
-       { ID id-SgNB-UE-X2AP-ID                                                 CRITICALITY reject      TYPE SgNB-UE-X2AP-ID                                                            PRESENCE mandatory}|
-       { ID id-Cause                                                                   CRITICALITY ignore      TYPE Cause                                                                                      PRESENCE mandatory}|
-       { ID id-PDCPChangeIndication                                    CRITICALITY ignore      TYPE PDCPChangeIndication                                                       PRESENCE optional}|
-       { ID id-E-RABs-ToBeReleased-SgNBModReqdList             CRITICALITY ignore      TYPE E-RABs-ToBeReleased-SgNBModReqdList                PRESENCE optional}|
-       { ID id-SgNBtoMeNBContainer                                             CRITICALITY ignore      TYPE SgNBtoMeNBContainer                                                        PRESENCE optional}|
-       { ID id-MeNB-UE-X2AP-ID-Extension                               CRITICALITY reject      TYPE UE-X2AP-ID-Extension                                                       PRESENCE optional}|
-       { ID id-E-RABs-ToBeModified-SgNBModReqdList             CRITICALITY ignore      TYPE E-RABs-ToBeModified-SgNBModReqdList                PRESENCE optional}|
-       { ID id-SgNBResourceCoordinationInformation             CRITICALITY ignore      TYPE SgNBResourceCoordinationInformation                PRESENCE optional}|
-       { ID id-RRCConfigIndication                                             CRITICALITY reject      TYPE RRC-Config-Ind                                                                     PRESENCE optional},
-       ...
-}
-*/
-
-struct SgNBModificationRequired_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 11; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;}
-               void select_id_Cause() { set(id_Cause); type=3;}
-               void select_id_PDCPChangeIndication() { set(id_PDCPChangeIndication); type=4;}
-               void select_id_E_RABs_ToBeReleased_SgNBModReqdList() { set(id_E_RABs_ToBeReleased_SgNBModReqdList); type=5;}
-               void select_id_SgNBtoMeNBContainer() { set(id_SgNBtoMeNBContainer); type=6;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=7;}
-               void select_id_E_RABs_ToBeModified_SgNBModReqdList() { set(id_E_RABs_ToBeModified_SgNBModReqdList); type=8;}
-               void select_id_SgNBResourceCoordinationInformation() { set(id_SgNBResourceCoordinationInformation); type=9;}
-               void select_id_RRCConfigIndication() { set(id_RRCConfigIndication); type=10;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_Cause)) { type = 3; return true; }
-                       else if(equal(id_PDCPChangeIndication)) { type = 4; return true; }
-                       else if(equal(id_E_RABs_ToBeReleased_SgNBModReqdList)) { type = 5; return true; }
-                       else if(equal(id_SgNBtoMeNBContainer)) { type = 6; return true; }
-                       else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 7; return true; }
-                       else if(equal(id_E_RABs_ToBeModified_SgNBModReqdList)) { type = 8; return true; }
-                       else if(equal(id_SgNBResourceCoordinationInformation)) { type = 9; return true; }
-                       else if(equal(id_RRCConfigIndication)) { type = 10; return true; }
-                       else { type = 11; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_PDCPChangeIndication);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_E_RABs_ToBeReleased_SgNBModReqdList);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(id_SgNBtoMeNBContainer);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(id_E_RABs_ToBeModified_SgNBModReqdList);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(id_SgNBResourceCoordinationInformation);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(id_RRCConfigIndication);} return false;
-                       case 11: type = 11; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 11; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(reject); type=2;}
-               void select_id_Cause() { set(ignore); type=3;}
-               void select_id_PDCPChangeIndication() { set(ignore); type=4;}
-               void select_id_E_RABs_ToBeReleased_SgNBModReqdList() { set(ignore); type=5;}
-               void select_id_SgNBtoMeNBContainer() { set(ignore); type=6;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=7;}
-               void select_id_E_RABs_ToBeModified_SgNBModReqdList() { set(ignore); type=8;}
-               void select_id_SgNBResourceCoordinationInformation() { set(ignore); type=9;}
-               void select_id_RRCConfigIndication() { set(reject); type=10;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else if(equal(ignore)) { type = 5; return true; }
-                       else if(equal(ignore)) { type = 6; return true; }
-                       else if(equal(reject)) { type = 7; return true; }
-                       else if(equal(ignore)) { type = 8; return true; }
-                       else if(equal(ignore)) { type = 9; return true; }
-                       else if(equal(reject)) { type = 10; return true; }
-                       else { type = 11; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 11: type = 11; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set<SgNB_UE_X2AP_ID>(2); }
-               SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get<SgNB_UE_X2AP_ID>(2); }
-               Cause& select_id_Cause() { return set<Cause>(3); }
-               Cause const* get_id_Cause() const { return get<Cause>(3); }
-               PDCPChangeIndication& select_id_PDCPChangeIndication() { return set<PDCPChangeIndication>(4); }
-               PDCPChangeIndication const* get_id_PDCPChangeIndication() const { return get<PDCPChangeIndication>(4); }
-               E_RABs_ToBeReleased_SgNBModReqdList& select_id_E_RABs_ToBeReleased_SgNBModReqdList() { return set<E_RABs_ToBeReleased_SgNBModReqdList>(5); }
-               E_RABs_ToBeReleased_SgNBModReqdList const* get_id_E_RABs_ToBeReleased_SgNBModReqdList() const { return get<E_RABs_ToBeReleased_SgNBModReqdList>(5); }
-               SgNBtoMeNBContainer& select_id_SgNBtoMeNBContainer() { return set<SgNBtoMeNBContainer>(6); }
-               SgNBtoMeNBContainer const* get_id_SgNBtoMeNBContainer() const { return get<SgNBtoMeNBContainer>(6); }
-               UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(7); }
-               UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(7); }
-               E_RABs_ToBeModified_SgNBModReqdList& select_id_E_RABs_ToBeModified_SgNBModReqdList() { return set<E_RABs_ToBeModified_SgNBModReqdList>(8); }
-               E_RABs_ToBeModified_SgNBModReqdList const* get_id_E_RABs_ToBeModified_SgNBModReqdList() const { return get<E_RABs_ToBeModified_SgNBModReqdList>(8); }
-               SgNBResourceCoordinationInformation& select_id_SgNBResourceCoordinationInformation() { return set<SgNBResourceCoordinationInformation>(9); }
-               SgNBResourceCoordinationInformation const* get_id_SgNBResourceCoordinationInformation() const { return get<SgNBResourceCoordinationInformation>(9); }
-               RRC_Config_Ind& select_id_RRCConfigIndication() { return set<RRC_Config_Ind>(10); }
-               RRC_Config_Ind const* get_id_RRCConfigIndication() const { return get<RRC_Config_Ind>(10); }
-               bool is_unknown() const { return type == 11; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<SgNB_UE_X2AP_ID>(); break;
-                       case 3: var.destroy<Cause>(); break;
-                       case 4: var.destroy<PDCPChangeIndication>(); break;
-                       case 5: var.destroy<E_RABs_ToBeReleased_SgNBModReqdList>(); break;
-                       case 6: var.destroy<SgNBtoMeNBContainer>(); break;
-                       case 7: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 8: var.destroy<E_RABs_ToBeModified_SgNBModReqdList>(); break;
-                       case 9: var.destroy<SgNBResourceCoordinationInformation>(); break;
-                       case 10: var.destroy<RRC_Config_Ind>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<SgNB_UE_X2AP_ID>(2);
-                       v.template operator()<Cause>(3);
-                       v.template operator()<PDCPChangeIndication>(4);
-                       v.template operator()<E_RABs_ToBeReleased_SgNBModReqdList>(5);
-                       v.template operator()<SgNBtoMeNBContainer>(6);
-                       v.template operator()<UE_X2AP_ID_Extension>(7);
-                       v.template operator()<E_RABs_ToBeModified_SgNBModReqdList>(8);
-                       v.template operator()<SgNBResourceCoordinationInformation>(9);
-                       v.template operator()<RRC_Config_Ind>(10);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_MeNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_SgNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_Cause()); return true;
-                       case 4: v(select_id_PDCPChangeIndication()); return true;
-                       case 5: v(select_id_E_RABs_ToBeReleased_SgNBModReqdList()); return true;
-                       case 6: v(select_id_SgNBtoMeNBContainer()); return true;
-                       case 7: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true;
-                       case 8: v(select_id_E_RABs_ToBeModified_SgNBModReqdList()); return true;
-                       case 9: v(select_id_SgNBResourceCoordinationInformation()); return true;
-                       case 10: v(select_id_RRCConfigIndication()); return true;
-                       case 11: if(type != 11) {clear(); asn::base::set();} type = 11; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<SgNB_UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<Cause>()); return true;
-                       case 4: v(var.as<PDCPChangeIndication>()); return true;
-                       case 5: v(var.as<E_RABs_ToBeReleased_SgNBModReqdList>()); return true;
-                       case 6: v(var.as<SgNBtoMeNBContainer>()); return true;
-                       case 7: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 8: v(var.as<E_RABs_ToBeModified_SgNBModReqdList>()); return true;
-                       case 9: v(var.as<SgNBResourceCoordinationInformation>()); return true;
-                       case 10: v(var.as<RRC_Config_Ind>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(Cause)];
-                       char dummy2[sizeof(E_RABs_ToBeModified_SgNBModReqdList)];
-                       char dummy3[sizeof(E_RABs_ToBeReleased_SgNBModReqdList)];
-                       char dummy4[sizeof(PDCPChangeIndication)];
-                       char dummy5[sizeof(RRC_Config_Ind)];
-                       char dummy6[sizeof(SgNBResourceCoordinationInformation)];
-                       char dummy7[sizeof(SgNB_UE_X2AP_ID)];
-                       char dummy8[sizeof(SgNBtoMeNBContainer)];
-                       char dummy9[sizeof(UE_X2AP_ID)];
-                       char dummy10[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 11; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(mandatory); type=2;}
-               void select_id_Cause() { set(mandatory); type=3;}
-               void select_id_PDCPChangeIndication() { set(optional); type=4;}
-               void select_id_E_RABs_ToBeReleased_SgNBModReqdList() { set(optional); type=5;}
-               void select_id_SgNBtoMeNBContainer() { set(optional); type=6;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=7;}
-               void select_id_E_RABs_ToBeModified_SgNBModReqdList() { set(optional); type=8;}
-               void select_id_SgNBResourceCoordinationInformation() { set(optional); type=9;}
-               void select_id_RRCConfigIndication() { set(optional); type=10;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else if(equal(optional)) { type = 6; return true; }
-                       else if(equal(optional)) { type = 7; return true; }
-                       else if(equal(optional)) { type = 8; return true; }
-                       else if(equal(optional)) { type = 9; return true; }
-                       else if(equal(optional)) { type = 10; return true; }
-                       else { type = 11; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 9: type = 9; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 10: type = 10; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 11: type = 11; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-SgNBModificationRequired ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container            {{SgNBModificationRequired-IEs}},
-       ...
-}
-*/
-
-struct SgNBModificationRequired : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "SgNBModificationRequired";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<SgNBModificationRequired_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<SgNBModificationRequired_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-SgNBReconfigurationComplete-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-MeNB-UE-X2AP-ID                                                 CRITICALITY reject      TYPE UE-X2AP-ID                                                                                 PRESENCE mandatory}|
-       { ID id-SgNB-UE-X2AP-ID                                                 CRITICALITY reject      TYPE SgNB-UE-X2AP-ID                                                                    PRESENCE mandatory}|
-       { ID id-ResponseInformationSgNBReconfComp               CRITICALITY ignore      TYPE ResponseInformationSgNBReconfComp                  PRESENCE mandatory}|
-       { ID id-MeNB-UE-X2AP-ID-Extension                               CRITICALITY reject      TYPE UE-X2AP-ID-Extension                                                               PRESENCE optional},
-       ...
-}
-*/
-
-struct SgNBReconfigurationComplete_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 5; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;}
-               void select_id_ResponseInformationSgNBReconfComp() { set(id_ResponseInformationSgNBReconfComp); type=3;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=4;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_ResponseInformationSgNBReconfComp)) { type = 3; return true; }
-                       else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 4; return true; }
-                       else { type = 5; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_ResponseInformationSgNBReconfComp);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false;
-                       case 5: type = 5; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 5; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(reject); type=2;}
-               void select_id_ResponseInformationSgNBReconfComp() { set(ignore); type=3;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=4;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(reject)) { type = 4; return true; }
-                       else { type = 5; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 5: type = 5; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set<SgNB_UE_X2AP_ID>(2); }
-               SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get<SgNB_UE_X2AP_ID>(2); }
-               ResponseInformationSgNBReconfComp& select_id_ResponseInformationSgNBReconfComp() { return set<ResponseInformationSgNBReconfComp>(3); }
-               ResponseInformationSgNBReconfComp const* get_id_ResponseInformationSgNBReconfComp() const { return get<ResponseInformationSgNBReconfComp>(3); }
-               UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(4); }
-               UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(4); }
-               bool is_unknown() const { return type == 5; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<SgNB_UE_X2AP_ID>(); break;
-                       case 3: var.destroy<ResponseInformationSgNBReconfComp>(); break;
-                       case 4: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<SgNB_UE_X2AP_ID>(2);
-                       v.template operator()<ResponseInformationSgNBReconfComp>(3);
-                       v.template operator()<UE_X2AP_ID_Extension>(4);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_MeNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_SgNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_ResponseInformationSgNBReconfComp()); return true;
-                       case 4: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true;
-                       case 5: if(type != 5) {clear(); asn::base::set();} type = 5; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<SgNB_UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<ResponseInformationSgNBReconfComp>()); return true;
-                       case 4: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(ResponseInformationSgNBReconfComp)];
-                       char dummy2[sizeof(SgNB_UE_X2AP_ID)];
-                       char dummy3[sizeof(UE_X2AP_ID)];
-                       char dummy4[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 5; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(mandatory); type=2;}
-               void select_id_ResponseInformationSgNBReconfComp() { set(mandatory); type=3;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=4;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else { type = 5; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-SgNBReconfigurationComplete ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{SgNBReconfigurationComplete-IEs}},
-       ...
-}
-*/
-
-struct SgNBReconfigurationComplete : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "SgNBReconfigurationComplete";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<SgNBReconfigurationComplete_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<SgNBReconfigurationComplete_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-SgNBReleaseConfirm-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-MeNB-UE-X2AP-ID                                                 CRITICALITY ignore      TYPE UE-X2AP-ID                                                                         PRESENCE mandatory}|
-       { ID id-SgNB-UE-X2AP-ID                                                 CRITICALITY ignore      TYPE SgNB-UE-X2AP-ID                                                                    PRESENCE mandatory}|
-       { ID id-E-RABs-ToBeReleased-SgNBRelConfList             CRITICALITY ignore      TYPE E-RABs-ToBeReleased-SgNBRelConfList                PRESENCE optional}|
-       { ID id-CriticalityDiagnostics                                  CRITICALITY ignore      TYPE CriticalityDiagnostics                                             PRESENCE optional}|
-       { ID id-MeNB-UE-X2AP-ID-Extension                               CRITICALITY ignore      TYPE UE-X2AP-ID-Extension                                                       PRESENCE optional},
-       ...
-}
-*/
-
-struct SgNBReleaseConfirm_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;}
-               void select_id_E_RABs_ToBeReleased_SgNBRelConfList() { set(id_E_RABs_ToBeReleased_SgNBRelConfList); type=3;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=4;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=5;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_E_RABs_ToBeReleased_SgNBRelConfList)) { type = 3; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 4; return true; }
-                       else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_E_RABs_ToBeReleased_SgNBRelConfList);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(ignore); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(ignore); type=2;}
-               void select_id_E_RABs_ToBeReleased_SgNBRelConfList() { set(ignore); type=3;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=4;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(ignore); type=5;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else if(equal(ignore)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set<SgNB_UE_X2AP_ID>(2); }
-               SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get<SgNB_UE_X2AP_ID>(2); }
-               E_RABs_ToBeReleased_SgNBRelConfList& select_id_E_RABs_ToBeReleased_SgNBRelConfList() { return set<E_RABs_ToBeReleased_SgNBRelConfList>(3); }
-               E_RABs_ToBeReleased_SgNBRelConfList const* get_id_E_RABs_ToBeReleased_SgNBRelConfList() const { return get<E_RABs_ToBeReleased_SgNBRelConfList>(3); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(4); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(4); }
-               UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(5); }
-               UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(5); }
-               bool is_unknown() const { return type == 6; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<SgNB_UE_X2AP_ID>(); break;
-                       case 3: var.destroy<E_RABs_ToBeReleased_SgNBRelConfList>(); break;
-                       case 4: var.destroy<CriticalityDiagnostics>(); break;
-                       case 5: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<SgNB_UE_X2AP_ID>(2);
-                       v.template operator()<E_RABs_ToBeReleased_SgNBRelConfList>(3);
-                       v.template operator()<CriticalityDiagnostics>(4);
-                       v.template operator()<UE_X2AP_ID_Extension>(5);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_MeNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_SgNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_E_RABs_ToBeReleased_SgNBRelConfList()); return true;
-                       case 4: v(select_id_CriticalityDiagnostics()); return true;
-                       case 5: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true;
-                       case 6: if(type != 6) {clear(); asn::base::set();} type = 6; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<SgNB_UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<E_RABs_ToBeReleased_SgNBRelConfList>()); return true;
-                       case 4: v(var.as<CriticalityDiagnostics>()); return true;
-                       case 5: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(CriticalityDiagnostics)];
-                       char dummy2[sizeof(E_RABs_ToBeReleased_SgNBRelConfList)];
-                       char dummy3[sizeof(SgNB_UE_X2AP_ID)];
-                       char dummy4[sizeof(UE_X2AP_ID)];
-                       char dummy5[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(mandatory); type=2;}
-               void select_id_E_RABs_ToBeReleased_SgNBRelConfList() { set(optional); type=3;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=4;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=5;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(optional)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-SgNBReleaseConfirm ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{SgNBReleaseConfirm-IEs}},
-       ...
-}
-*/
-
-struct SgNBReleaseConfirm : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "SgNBReleaseConfirm";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<SgNBReleaseConfirm_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<SgNBReleaseConfirm_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-SgNBReleaseRequest-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-MeNB-UE-X2AP-ID                                                 CRITICALITY reject      TYPE UE-X2AP-ID                                                                         PRESENCE mandatory}|
-       { ID id-SgNB-UE-X2AP-ID                                                 CRITICALITY reject      TYPE SgNB-UE-X2AP-ID                                                                    PRESENCE optional}|
-       { ID id-Cause                                                                   CRITICALITY ignore      TYPE Cause                                                                                      PRESENCE mandatory}|
-       { ID id-E-RABs-ToBeReleased-SgNBRelReqList              CRITICALITY ignore      TYPE E-RABs-ToBeReleased-SgNBRelReqList         PRESENCE optional}|
-       { ID id-UE-ContextKeptIndicator                                 CRITICALITY ignore      TYPE UE-ContextKeptIndicator                                            PRESENCE optional}|
-       { ID id-MeNB-UE-X2AP-ID-Extension                               CRITICALITY reject      TYPE UE-X2AP-ID-Extension                                                       PRESENCE optional}|
-       { ID id-MeNBtoSgNBContainer                                             CRITICALITY reject      TYPE MeNBtoSgNBContainer                                                                PRESENCE optional},
-       ...
-}
-*/
-
-struct SgNBReleaseRequest_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 8; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;}
-               void select_id_Cause() { set(id_Cause); type=3;}
-               void select_id_E_RABs_ToBeReleased_SgNBRelReqList() { set(id_E_RABs_ToBeReleased_SgNBRelReqList); type=4;}
-               void select_id_UE_ContextKeptIndicator() { set(id_UE_ContextKeptIndicator); type=5;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=6;}
-               void select_id_MeNBtoSgNBContainer() { set(id_MeNBtoSgNBContainer); type=7;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_Cause)) { type = 3; return true; }
-                       else if(equal(id_E_RABs_ToBeReleased_SgNBRelReqList)) { type = 4; return true; }
-                       else if(equal(id_UE_ContextKeptIndicator)) { type = 5; return true; }
-                       else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 6; return true; }
-                       else if(equal(id_MeNBtoSgNBContainer)) { type = 7; return true; }
-                       else { type = 8; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_E_RABs_ToBeReleased_SgNBRelReqList);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_UE_ContextKeptIndicator);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(id_MeNBtoSgNBContainer);} return false;
-                       case 8: type = 8; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 8; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(reject); type=2;}
-               void select_id_Cause() { set(ignore); type=3;}
-               void select_id_E_RABs_ToBeReleased_SgNBRelReqList() { set(ignore); type=4;}
-               void select_id_UE_ContextKeptIndicator() { set(ignore); type=5;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=6;}
-               void select_id_MeNBtoSgNBContainer() { set(reject); type=7;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else if(equal(ignore)) { type = 5; return true; }
-                       else if(equal(reject)) { type = 6; return true; }
-                       else if(equal(reject)) { type = 7; return true; }
-                       else { type = 8; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 8: type = 8; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set<SgNB_UE_X2AP_ID>(2); }
-               SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get<SgNB_UE_X2AP_ID>(2); }
-               Cause& select_id_Cause() { return set<Cause>(3); }
-               Cause const* get_id_Cause() const { return get<Cause>(3); }
-               E_RABs_ToBeReleased_SgNBRelReqList& select_id_E_RABs_ToBeReleased_SgNBRelReqList() { return set<E_RABs_ToBeReleased_SgNBRelReqList>(4); }
-               E_RABs_ToBeReleased_SgNBRelReqList const* get_id_E_RABs_ToBeReleased_SgNBRelReqList() const { return get<E_RABs_ToBeReleased_SgNBRelReqList>(4); }
-               UE_ContextKeptIndicator& select_id_UE_ContextKeptIndicator() { return set<UE_ContextKeptIndicator>(5); }
-               UE_ContextKeptIndicator const* get_id_UE_ContextKeptIndicator() const { return get<UE_ContextKeptIndicator>(5); }
-               UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(6); }
-               UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(6); }
-               MeNBtoSgNBContainer& select_id_MeNBtoSgNBContainer() { return set<MeNBtoSgNBContainer>(7); }
-               MeNBtoSgNBContainer const* get_id_MeNBtoSgNBContainer() const { return get<MeNBtoSgNBContainer>(7); }
-               bool is_unknown() const { return type == 8; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<SgNB_UE_X2AP_ID>(); break;
-                       case 3: var.destroy<Cause>(); break;
-                       case 4: var.destroy<E_RABs_ToBeReleased_SgNBRelReqList>(); break;
-                       case 5: var.destroy<UE_ContextKeptIndicator>(); break;
-                       case 6: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 7: var.destroy<MeNBtoSgNBContainer>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<SgNB_UE_X2AP_ID>(2);
-                       v.template operator()<Cause>(3);
-                       v.template operator()<E_RABs_ToBeReleased_SgNBRelReqList>(4);
-                       v.template operator()<UE_ContextKeptIndicator>(5);
-                       v.template operator()<UE_X2AP_ID_Extension>(6);
-                       v.template operator()<MeNBtoSgNBContainer>(7);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_MeNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_SgNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_Cause()); return true;
-                       case 4: v(select_id_E_RABs_ToBeReleased_SgNBRelReqList()); return true;
-                       case 5: v(select_id_UE_ContextKeptIndicator()); return true;
-                       case 6: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true;
-                       case 7: v(select_id_MeNBtoSgNBContainer()); return true;
-                       case 8: if(type != 8) {clear(); asn::base::set();} type = 8; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<SgNB_UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<Cause>()); return true;
-                       case 4: v(var.as<E_RABs_ToBeReleased_SgNBRelReqList>()); return true;
-                       case 5: v(var.as<UE_ContextKeptIndicator>()); return true;
-                       case 6: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 7: v(var.as<MeNBtoSgNBContainer>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(Cause)];
-                       char dummy2[sizeof(E_RABs_ToBeReleased_SgNBRelReqList)];
-                       char dummy3[sizeof(MeNBtoSgNBContainer)];
-                       char dummy4[sizeof(SgNB_UE_X2AP_ID)];
-                       char dummy5[sizeof(UE_ContextKeptIndicator)];
-                       char dummy6[sizeof(UE_X2AP_ID)];
-                       char dummy7[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 8; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(optional); type=2;}
-               void select_id_Cause() { set(mandatory); type=3;}
-               void select_id_E_RABs_ToBeReleased_SgNBRelReqList() { set(optional); type=4;}
-               void select_id_UE_ContextKeptIndicator() { set(optional); type=5;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=6;}
-               void select_id_MeNBtoSgNBContainer() { set(optional); type=7;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else if(equal(optional)) { type = 6; return true; }
-                       else if(equal(optional)) { type = 7; return true; }
-                       else { type = 8; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 8: type = 8; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-SgNBReleaseRequest ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container            {{SgNBReleaseRequest-IEs}},
-       ...
-}
-*/
-
-struct SgNBReleaseRequest : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "SgNBReleaseRequest";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<SgNBReleaseRequest_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<SgNBReleaseRequest_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-SgNBReleaseRequestAcknowledge-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-MeNB-UE-X2AP-ID                                                                 CRITICALITY ignore      TYPE UE-X2AP-ID                                                                                 PRESENCE mandatory}|
-       { ID id-SgNB-UE-X2AP-ID                                                                 CRITICALITY ignore      TYPE SgNB-UE-X2AP-ID                                                            PRESENCE mandatory}|
-       { ID id-CriticalityDiagnostics                                                  CRITICALITY ignore      TYPE CriticalityDiagnostics                                             PRESENCE optional }|
-       { ID id-MeNB-UE-X2AP-ID-Extension                                               CRITICALITY reject      TYPE UE-X2AP-ID-Extension                                                       PRESENCE optional }|
-       { ID id-E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList  CRITICALITY ignore      TYPE E-RABs-Admitted-ToBeReleased-SgNBRelReqAckList     PRESENCE optional },
-       ...
-}
-*/
-
-struct SgNBReleaseRequestAcknowledge_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=3;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=4;}
-               void select_id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList() { set(id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList); type=5;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 3; return true; }
-                       else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 4; return true; }
-                       else if(equal(id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(ignore); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(ignore); type=2;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=3;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=4;}
-               void select_id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList() { set(ignore); type=5;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(reject)) { type = 4; return true; }
-                       else if(equal(ignore)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set<SgNB_UE_X2AP_ID>(2); }
-               SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get<SgNB_UE_X2AP_ID>(2); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(3); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(3); }
-               UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(4); }
-               UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(4); }
-               E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList& select_id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList() { return set<E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList>(5); }
-               E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList const* get_id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList() const { return get<E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList>(5); }
-               bool is_unknown() const { return type == 6; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<SgNB_UE_X2AP_ID>(); break;
-                       case 3: var.destroy<CriticalityDiagnostics>(); break;
-                       case 4: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 5: var.destroy<E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<SgNB_UE_X2AP_ID>(2);
-                       v.template operator()<CriticalityDiagnostics>(3);
-                       v.template operator()<UE_X2AP_ID_Extension>(4);
-                       v.template operator()<E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList>(5);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_MeNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_SgNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_CriticalityDiagnostics()); return true;
-                       case 4: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true;
-                       case 5: v(select_id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList()); return true;
-                       case 6: if(type != 6) {clear(); asn::base::set();} type = 6; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<SgNB_UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<CriticalityDiagnostics>()); return true;
-                       case 4: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 5: v(var.as<E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(CriticalityDiagnostics)];
-                       char dummy2[sizeof(E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList)];
-                       char dummy3[sizeof(SgNB_UE_X2AP_ID)];
-                       char dummy4[sizeof(UE_X2AP_ID)];
-                       char dummy5[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(mandatory); type=2;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=3;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=4;}
-               void select_id_E_RABs_Admitted_ToBeReleased_SgNBRelReqAckList() { set(optional); type=5;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(optional)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-SgNBReleaseRequestAcknowledge ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container            {{SgNBReleaseRequestAcknowledge-IEs}},
-       ...
-}
-*/
-
-struct SgNBReleaseRequestAcknowledge : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "SgNBReleaseRequestAcknowledge";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<SgNBReleaseRequestAcknowledge_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<SgNBReleaseRequestAcknowledge_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-SgNBReleaseRequestReject-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-MeNB-UE-X2AP-ID                                                 CRITICALITY ignore      TYPE UE-X2AP-ID                                                                         PRESENCE mandatory}|
-       { ID id-SgNB-UE-X2AP-ID                                                 CRITICALITY ignore      TYPE SgNB-UE-X2AP-ID                                                                    PRESENCE mandatory}|
-       { ID id-Cause                                                                   CRITICALITY ignore      TYPE Cause                                                                                      PRESENCE mandatory}|
-       { ID id-CriticalityDiagnostics                                  CRITICALITY ignore      TYPE CriticalityDiagnostics                                             PRESENCE optional}|
-       { ID id-MeNB-UE-X2AP-ID-Extension                               CRITICALITY reject      TYPE UE-X2AP-ID-Extension                                                       PRESENCE optional},
-       ...
-}
-*/
-
-struct SgNBReleaseRequestReject_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;}
-               void select_id_Cause() { set(id_Cause); type=3;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=4;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=5;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_Cause)) { type = 3; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 4; return true; }
-                       else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(ignore); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(ignore); type=2;}
-               void select_id_Cause() { set(ignore); type=3;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=4;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=5;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else if(equal(reject)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set<SgNB_UE_X2AP_ID>(2); }
-               SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get<SgNB_UE_X2AP_ID>(2); }
-               Cause& select_id_Cause() { return set<Cause>(3); }
-               Cause const* get_id_Cause() const { return get<Cause>(3); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(4); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(4); }
-               UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(5); }
-               UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(5); }
-               bool is_unknown() const { return type == 6; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<SgNB_UE_X2AP_ID>(); break;
-                       case 3: var.destroy<Cause>(); break;
-                       case 4: var.destroy<CriticalityDiagnostics>(); break;
-                       case 5: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<SgNB_UE_X2AP_ID>(2);
-                       v.template operator()<Cause>(3);
-                       v.template operator()<CriticalityDiagnostics>(4);
-                       v.template operator()<UE_X2AP_ID_Extension>(5);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_MeNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_SgNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_Cause()); return true;
-                       case 4: v(select_id_CriticalityDiagnostics()); return true;
-                       case 5: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true;
-                       case 6: if(type != 6) {clear(); asn::base::set();} type = 6; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<SgNB_UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<Cause>()); return true;
-                       case 4: v(var.as<CriticalityDiagnostics>()); return true;
-                       case 5: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(Cause)];
-                       char dummy2[sizeof(CriticalityDiagnostics)];
-                       char dummy3[sizeof(SgNB_UE_X2AP_ID)];
-                       char dummy4[sizeof(UE_X2AP_ID)];
-                       char dummy5[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(mandatory); type=2;}
-               void select_id_Cause() { set(mandatory); type=3;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=4;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=5;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-SgNBReleaseRequestReject ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container            {{SgNBReleaseRequestReject-IEs}},
-       ...
-}
-*/
-
-struct SgNBReleaseRequestReject : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "SgNBReleaseRequestReject";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<SgNBReleaseRequestReject_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<SgNBReleaseRequestReject_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-SgNBReleaseRequired-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-MeNB-UE-X2AP-ID                                                 CRITICALITY reject      TYPE UE-X2AP-ID                                                                                 PRESENCE mandatory}|
-       { ID id-SgNB-UE-X2AP-ID                                                 CRITICALITY reject      TYPE SgNB-UE-X2AP-ID                                                                            PRESENCE mandatory}|
-       { ID id-Cause                                                                   CRITICALITY ignore      TYPE Cause                                                                                              PRESENCE mandatory}|
-       { ID id-MeNB-UE-X2AP-ID-Extension                               CRITICALITY reject      TYPE UE-X2AP-ID-Extension                                                       PRESENCE optional }|
-       { ID id-E-RABs-ToBeReleased-SgNBRelReqdList             CRITICALITY ignore      TYPE E-RABs-ToBeReleased-SgNBRelReqdList                PRESENCE optional },
-       ...
-}
-*/
-
-struct SgNBReleaseRequired_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(id_MeNB_UE_X2AP_ID); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=2;}
-               void select_id_Cause() { set(id_Cause); type=3;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(id_MeNB_UE_X2AP_ID_Extension); type=4;}
-               void select_id_E_RABs_ToBeReleased_SgNBRelReqdList() { set(id_E_RABs_ToBeReleased_SgNBRelReqdList); type=5;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_MeNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_SgNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_Cause)) { type = 3; return true; }
-                       else if(equal(id_MeNB_UE_X2AP_ID_Extension)) { type = 4; return true; }
-                       else if(equal(id_E_RABs_ToBeReleased_SgNBRelReqdList)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_Cause);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_MeNB_UE_X2AP_ID_Extension);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_E_RABs_ToBeReleased_SgNBRelReqdList);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(reject); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(reject); type=2;}
-               void select_id_Cause() { set(ignore); type=3;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(reject); type=4;}
-               void select_id_E_RABs_ToBeReleased_SgNBRelReqdList() { set(ignore); type=5;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else if(equal(reject)) { type = 4; return true; }
-                       else if(equal(ignore)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_MeNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_MeNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set<SgNB_UE_X2AP_ID>(2); }
-               SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get<SgNB_UE_X2AP_ID>(2); }
-               Cause& select_id_Cause() { return set<Cause>(3); }
-               Cause const* get_id_Cause() const { return get<Cause>(3); }
-               UE_X2AP_ID_Extension& select_id_MeNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(4); }
-               UE_X2AP_ID_Extension const* get_id_MeNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(4); }
-               E_RABs_ToBeReleased_SgNBRelReqdList& select_id_E_RABs_ToBeReleased_SgNBRelReqdList() { return set<E_RABs_ToBeReleased_SgNBRelReqdList>(5); }
-               E_RABs_ToBeReleased_SgNBRelReqdList const* get_id_E_RABs_ToBeReleased_SgNBRelReqdList() const { return get<E_RABs_ToBeReleased_SgNBRelReqdList>(5); }
-               bool is_unknown() const { return type == 6; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<SgNB_UE_X2AP_ID>(); break;
-                       case 3: var.destroy<Cause>(); break;
-                       case 4: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 5: var.destroy<E_RABs_ToBeReleased_SgNBRelReqdList>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<SgNB_UE_X2AP_ID>(2);
-                       v.template operator()<Cause>(3);
-                       v.template operator()<UE_X2AP_ID_Extension>(4);
-                       v.template operator()<E_RABs_ToBeReleased_SgNBRelReqdList>(5);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_MeNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_SgNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_Cause()); return true;
-                       case 4: v(select_id_MeNB_UE_X2AP_ID_Extension()); return true;
-                       case 5: v(select_id_E_RABs_ToBeReleased_SgNBRelReqdList()); return true;
-                       case 6: if(type != 6) {clear(); asn::base::set();} type = 6; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<SgNB_UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<Cause>()); return true;
-                       case 4: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 5: v(var.as<E_RABs_ToBeReleased_SgNBRelReqdList>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(Cause)];
-                       char dummy2[sizeof(E_RABs_ToBeReleased_SgNBRelReqdList)];
-                       char dummy3[sizeof(SgNB_UE_X2AP_ID)];
-                       char dummy4[sizeof(UE_X2AP_ID)];
-                       char dummy5[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_MeNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_SgNB_UE_X2AP_ID() { set(mandatory); type=2;}
-               void select_id_Cause() { set(mandatory); type=3;}
-               void select_id_MeNB_UE_X2AP_ID_Extension() { set(optional); type=4;}
-               void select_id_E_RABs_ToBeReleased_SgNBRelReqdList() { set(optional); type=5;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(mandatory)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-SgNBReleaseRequired ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{SgNBReleaseRequired-IEs}},
-       ...
-}
-*/
-
-struct SgNBReleaseRequired : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "SgNBReleaseRequired";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<SgNBReleaseRequired_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<SgNBReleaseRequired_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-UEContextRelease-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-Old-eNB-UE-X2AP-ID                                      CRITICALITY reject      TYPE UE-X2AP-ID                                                                 PRESENCE mandatory}|
-       { ID id-New-eNB-UE-X2AP-ID                                      CRITICALITY reject      TYPE UE-X2AP-ID                                                                 PRESENCE mandatory}|
-       { ID id-Old-eNB-UE-X2AP-ID-Extension            CRITICALITY reject      TYPE UE-X2AP-ID-Extension                                               PRESENCE optional}|
-       { ID id-New-eNB-UE-X2AP-ID-Extension            CRITICALITY reject      TYPE UE-X2AP-ID-Extension                                               PRESENCE optional}|
-       { ID id-SIPTO-BearerDeactivationIndication      CRITICALITY ignore      TYPE SIPTOBearerDeactivationIndication          PRESENCE optional}|
-       { ID id-SgNB-UE-X2AP-ID                                         CRITICALITY ignore      TYPE SgNB-UE-X2AP-ID                                                    PRESENCE optional},
-       ...
-}
-*/
-
-struct UEContextRelease_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 7; }
-               void clear() {type = 0;}
-               void select_id_Old_eNB_UE_X2AP_ID() { set(id_Old_eNB_UE_X2AP_ID); type=1;}
-               void select_id_New_eNB_UE_X2AP_ID() { set(id_New_eNB_UE_X2AP_ID); type=2;}
-               void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(id_Old_eNB_UE_X2AP_ID_Extension); type=3;}
-               void select_id_New_eNB_UE_X2AP_ID_Extension() { set(id_New_eNB_UE_X2AP_ID_Extension); type=4;}
-               void select_id_SIPTO_BearerDeactivationIndication() { set(id_SIPTO_BearerDeactivationIndication); type=5;}
-               void select_id_SgNB_UE_X2AP_ID() { set(id_SgNB_UE_X2AP_ID); type=6;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_Old_eNB_UE_X2AP_ID)) { type = 1; return true; }
-                       else if(equal(id_New_eNB_UE_X2AP_ID)) { type = 2; return true; }
-                       else if(equal(id_Old_eNB_UE_X2AP_ID_Extension)) { type = 3; return true; }
-                       else if(equal(id_New_eNB_UE_X2AP_ID_Extension)) { type = 4; return true; }
-                       else if(equal(id_SIPTO_BearerDeactivationIndication)) { type = 5; return true; }
-                       else if(equal(id_SgNB_UE_X2AP_ID)) { type = 6; return true; }
-                       else { type = 7; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_Old_eNB_UE_X2AP_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_New_eNB_UE_X2AP_ID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_Old_eNB_UE_X2AP_ID_Extension);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_New_eNB_UE_X2AP_ID_Extension);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_SIPTO_BearerDeactivationIndication);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(id_SgNB_UE_X2AP_ID);} return false;
-                       case 7: type = 7; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 7; }
-               void clear() {type = 0;}
-               void select_id_Old_eNB_UE_X2AP_ID() { set(reject); type=1;}
-               void select_id_New_eNB_UE_X2AP_ID() { set(reject); type=2;}
-               void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(reject); type=3;}
-               void select_id_New_eNB_UE_X2AP_ID_Extension() { set(reject); type=4;}
-               void select_id_SIPTO_BearerDeactivationIndication() { set(ignore); type=5;}
-               void select_id_SgNB_UE_X2AP_ID() { set(ignore); type=6;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(reject)) { type = 3; return true; }
-                       else if(equal(reject)) { type = 4; return true; }
-                       else if(equal(ignore)) { type = 5; return true; }
-                       else if(equal(ignore)) { type = 6; return true; }
-                       else { type = 7; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 7: type = 7; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               UE_X2AP_ID& select_id_Old_eNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(1); }
-               UE_X2AP_ID const* get_id_Old_eNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(1); }
-               UE_X2AP_ID& select_id_New_eNB_UE_X2AP_ID() { return set<UE_X2AP_ID>(2); }
-               UE_X2AP_ID const* get_id_New_eNB_UE_X2AP_ID() const { return get<UE_X2AP_ID>(2); }
-               UE_X2AP_ID_Extension& select_id_Old_eNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(3); }
-               UE_X2AP_ID_Extension const* get_id_Old_eNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(3); }
-               UE_X2AP_ID_Extension& select_id_New_eNB_UE_X2AP_ID_Extension() { return set<UE_X2AP_ID_Extension>(4); }
-               UE_X2AP_ID_Extension const* get_id_New_eNB_UE_X2AP_ID_Extension() const { return get<UE_X2AP_ID_Extension>(4); }
-               SIPTOBearerDeactivationIndication& select_id_SIPTO_BearerDeactivationIndication() { return set<SIPTOBearerDeactivationIndication>(5); }
-               SIPTOBearerDeactivationIndication const* get_id_SIPTO_BearerDeactivationIndication() const { return get<SIPTOBearerDeactivationIndication>(5); }
-               SgNB_UE_X2AP_ID& select_id_SgNB_UE_X2AP_ID() { return set<SgNB_UE_X2AP_ID>(6); }
-               SgNB_UE_X2AP_ID const* get_id_SgNB_UE_X2AP_ID() const { return get<SgNB_UE_X2AP_ID>(6); }
-               bool is_unknown() const { return type == 7; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<UE_X2AP_ID>(); break;
-                       case 2: var.destroy<UE_X2AP_ID>(); break;
-                       case 3: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 4: var.destroy<UE_X2AP_ID_Extension>(); break;
-                       case 5: var.destroy<SIPTOBearerDeactivationIndication>(); break;
-                       case 6: var.destroy<SgNB_UE_X2AP_ID>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<UE_X2AP_ID>(1);
-                       v.template operator()<UE_X2AP_ID>(2);
-                       v.template operator()<UE_X2AP_ID_Extension>(3);
-                       v.template operator()<UE_X2AP_ID_Extension>(4);
-                       v.template operator()<SIPTOBearerDeactivationIndication>(5);
-                       v.template operator()<SgNB_UE_X2AP_ID>(6);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_Old_eNB_UE_X2AP_ID()); return true;
-                       case 2: v(select_id_New_eNB_UE_X2AP_ID()); return true;
-                       case 3: v(select_id_Old_eNB_UE_X2AP_ID_Extension()); return true;
-                       case 4: v(select_id_New_eNB_UE_X2AP_ID_Extension()); return true;
-                       case 5: v(select_id_SIPTO_BearerDeactivationIndication()); return true;
-                       case 6: v(select_id_SgNB_UE_X2AP_ID()); return true;
-                       case 7: if(type != 7) {clear(); asn::base::set();} type = 7; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<UE_X2AP_ID>()); return true;
-                       case 2: v(var.as<UE_X2AP_ID>()); return true;
-                       case 3: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 4: v(var.as<UE_X2AP_ID_Extension>()); return true;
-                       case 5: v(var.as<SIPTOBearerDeactivationIndication>()); return true;
-                       case 6: v(var.as<SgNB_UE_X2AP_ID>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(SIPTOBearerDeactivationIndication)];
-                       char dummy2[sizeof(SgNB_UE_X2AP_ID)];
-                       char dummy3[sizeof(UE_X2AP_ID)];
-                       char dummy4[sizeof(UE_X2AP_ID_Extension)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 7; }
-               void clear() {type = 0;}
-               void select_id_Old_eNB_UE_X2AP_ID() { set(mandatory); type=1;}
-               void select_id_New_eNB_UE_X2AP_ID() { set(mandatory); type=2;}
-               void select_id_Old_eNB_UE_X2AP_ID_Extension() { set(optional); type=3;}
-               void select_id_New_eNB_UE_X2AP_ID_Extension() { set(optional); type=4;}
-               void select_id_SIPTO_BearerDeactivationIndication() { set(optional); type=5;}
-               void select_id_SgNB_UE_X2AP_ID() { set(optional); type=6;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(optional)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else if(equal(optional)) { type = 6; return true; }
-                       else { type = 7; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 7: type = 7; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-UEContextRelease ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{UEContextRelease-IEs}},
-       ...
-}
-*/
-
-struct UEContextRelease : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "UEContextRelease";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<UEContextRelease_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<UEContextRelease_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-X2AP-Message ::= OCTET STRING
-*/
-
-struct X2AP_Message : asn::ostring<>
-{
-       static constexpr const char* name() {return "X2AP-Message";}
-       using parent_t = asn::ostring<>;
-
-};
-
-/*
-X2APMessageTransfer-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-RNL-Header      CRITICALITY reject      TYPE RNL-Header                         PRESENCE mandatory}|
-       { ID id-x2APMessage     CRITICALITY reject      TYPE X2AP-Message                       PRESENCE optional},
-       ...
-}
-*/
-
-struct X2APMessageTransfer_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_RNL_Header() { set(id_RNL_Header); type=1;}
-               void select_id_x2APMessage() { set(id_x2APMessage); type=2;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_RNL_Header)) { type = 1; return true; }
-                       else if(equal(id_x2APMessage)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_RNL_Header);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_x2APMessage);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_RNL_Header() { set(reject); type=1;}
-               void select_id_x2APMessage() { set(reject); type=2;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               RNL_Header& select_id_RNL_Header() { return set<RNL_Header>(1); }
-               RNL_Header const* get_id_RNL_Header() const { return get<RNL_Header>(1); }
-               X2AP_Message& select_id_x2APMessage() { return set<X2AP_Message>(2); }
-               X2AP_Message const* get_id_x2APMessage() const { return get<X2AP_Message>(2); }
-               bool is_unknown() const { return type == 3; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<RNL_Header>(); break;
-                       case 2: var.destroy<X2AP_Message>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<RNL_Header>(1);
-                       v.template operator()<X2AP_Message>(2);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_RNL_Header()); return true;
-                       case 2: v(select_id_x2APMessage()); return true;
-                       case 3: if(type != 3) {clear(); asn::base::set();} type = 3; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<RNL_Header>()); return true;
-                       case 2: v(var.as<X2AP_Message>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(RNL_Header)];
-                       char dummy2[sizeof(X2AP_Message)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_RNL_Header() { set(mandatory); type=1;}
-               void select_id_x2APMessage() { set(optional); type=2;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-X2APMessageTransfer ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{X2APMessageTransfer-IEs}},
-       ...
-}
-*/
-
-struct X2APMessageTransfer : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "X2APMessageTransfer";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<X2APMessageTransfer_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<X2APMessageTransfer_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-X2Release-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-GlobalENB-ID                    CRITICALITY reject      TYPE GlobalENB-ID                       PRESENCE mandatory},
-...
-}
-*/
-
-struct X2Release_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_GlobalENB_ID() { set(id_GlobalENB_ID); type=1;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_GlobalENB_ID)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_GlobalENB_ID);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_GlobalENB_ID() { set(reject); type=1;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               GlobalENB_ID& select_id_GlobalENB_ID() { return set<GlobalENB_ID>(1); }
-               GlobalENB_ID const* get_id_GlobalENB_ID() const { return get<GlobalENB_ID>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<GlobalENB_ID>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<GlobalENB_ID>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_GlobalENB_ID()); return true;
-                       case 2: if(type != 2) {clear(); asn::base::set();} type = 2; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<GlobalENB_ID>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(GlobalENB_ID)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 2; }
-               void clear() {type = 0;}
-               void select_id_GlobalENB_ID() { set(mandatory); type=1;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else { type = 2; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-X2Release ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{X2Release-IEs}},
-       ...
-}
-*/
-
-struct X2Release : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "X2Release";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<X2Release_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<X2Release_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-X2RemovalFailure-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-Cause                                           CRITICALITY ignore      TYPE Cause                                                      PRESENCE mandatory}|
-       { ID id-CriticalityDiagnostics          CRITICALITY ignore      TYPE CriticalityDiagnostics                     PRESENCE optional},
-       ...
-}
-*/
-
-struct X2RemovalFailure_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_Cause() { set(id_Cause); type=1;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=2;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_Cause)) { type = 1; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_Cause);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_Cause() { set(ignore); type=1;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=2;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               Cause& select_id_Cause() { return set<Cause>(1); }
-               Cause const* get_id_Cause() const { return get<Cause>(1); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(2); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(2); }
-               bool is_unknown() const { return type == 3; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<Cause>(); break;
-                       case 2: var.destroy<CriticalityDiagnostics>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<Cause>(1);
-                       v.template operator()<CriticalityDiagnostics>(2);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_Cause()); return true;
-                       case 2: v(select_id_CriticalityDiagnostics()); return true;
-                       case 3: if(type != 3) {clear(); asn::base::set();} type = 3; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<Cause>()); return true;
-                       case 2: v(var.as<CriticalityDiagnostics>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(Cause)];
-                       char dummy2[sizeof(CriticalityDiagnostics)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_Cause() { set(mandatory); type=1;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=2;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-X2RemovalFailure ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{X2RemovalFailure-IEs}},
-       ...
-}
-*/
-
-struct X2RemovalFailure : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "X2RemovalFailure";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<X2RemovalFailure_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<X2RemovalFailure_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-X2RemovalRequest-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-GlobalENB-ID                            CRITICALITY reject      TYPE GlobalENB-ID                       PRESENCE mandatory}|
-       { ID id-X2RemovalThreshold                      CRITICALITY reject      TYPE X2BenefitValue                     PRESENCE optional},
-...
-}
-*/
-
-struct X2RemovalRequest_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_GlobalENB_ID() { set(id_GlobalENB_ID); type=1;}
-               void select_id_X2RemovalThreshold() { set(id_X2RemovalThreshold); type=2;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_GlobalENB_ID)) { type = 1; return true; }
-                       else if(equal(id_X2RemovalThreshold)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_GlobalENB_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_X2RemovalThreshold);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_GlobalENB_ID() { set(reject); type=1;}
-               void select_id_X2RemovalThreshold() { set(reject); type=2;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               GlobalENB_ID& select_id_GlobalENB_ID() { return set<GlobalENB_ID>(1); }
-               GlobalENB_ID const* get_id_GlobalENB_ID() const { return get<GlobalENB_ID>(1); }
-               X2BenefitValue& select_id_X2RemovalThreshold() { return set<X2BenefitValue>(2); }
-               X2BenefitValue const* get_id_X2RemovalThreshold() const { return get<X2BenefitValue>(2); }
-               bool is_unknown() const { return type == 3; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<GlobalENB_ID>(); break;
-                       case 2: var.destroy<X2BenefitValue>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<GlobalENB_ID>(1);
-                       v.template operator()<X2BenefitValue>(2);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_GlobalENB_ID()); return true;
-                       case 2: v(select_id_X2RemovalThreshold()); return true;
-                       case 3: if(type != 3) {clear(); asn::base::set();} type = 3; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<GlobalENB_ID>()); return true;
-                       case 2: v(var.as<X2BenefitValue>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(GlobalENB_ID)];
-                       char dummy2[sizeof(X2BenefitValue)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_GlobalENB_ID() { set(mandatory); type=1;}
-               void select_id_X2RemovalThreshold() { set(optional); type=2;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-X2RemovalRequest ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{X2RemovalRequest-IEs}},
-       ...
-}
-*/
-
-struct X2RemovalRequest : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "X2RemovalRequest";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<X2RemovalRequest_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<X2RemovalRequest_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-X2RemovalResponse-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-GlobalENB-ID                            CRITICALITY reject      TYPE GlobalENB-ID                               PRESENCE mandatory}|
-       { ID id-CriticalityDiagnostics          CRITICALITY ignore      TYPE CriticalityDiagnostics             PRESENCE optional},
-       ...
-}
-*/
-
-struct X2RemovalResponse_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_GlobalENB_ID() { set(id_GlobalENB_ID); type=1;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=2;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_GlobalENB_ID)) { type = 1; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_GlobalENB_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_GlobalENB_ID() { set(reject); type=1;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=2;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               GlobalENB_ID& select_id_GlobalENB_ID() { return set<GlobalENB_ID>(1); }
-               GlobalENB_ID const* get_id_GlobalENB_ID() const { return get<GlobalENB_ID>(1); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(2); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(2); }
-               bool is_unknown() const { return type == 3; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<GlobalENB_ID>(); break;
-                       case 2: var.destroy<CriticalityDiagnostics>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<GlobalENB_ID>(1);
-                       v.template operator()<CriticalityDiagnostics>(2);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_GlobalENB_ID()); return true;
-                       case 2: v(select_id_CriticalityDiagnostics()); return true;
-                       case 3: if(type != 3) {clear(); asn::base::set();} type = 3; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<GlobalENB_ID>()); return true;
-                       case 2: v(var.as<CriticalityDiagnostics>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(CriticalityDiagnostics)];
-                       char dummy2[sizeof(GlobalENB_ID)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 3; }
-               void clear() {type = 0;}
-               void select_id_GlobalENB_ID() { set(mandatory); type=1;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=2;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else { type = 3; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-X2RemovalResponse ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{X2RemovalResponse-IEs}},
-       ...
-}
-*/
-
-struct X2RemovalResponse : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "X2RemovalResponse";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<X2RemovalResponse_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<X2RemovalResponse_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-X2SetupFailure-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-Cause                                   CRITICALITY ignore              TYPE Cause                                                              PRESENCE mandatory} |
-       { ID id-TimeToWait                              CRITICALITY ignore              TYPE TimeToWait                                                 PRESENCE optional} |
-       { ID id-CriticalityDiagnostics  CRITICALITY ignore              TYPE CriticalityDiagnostics                             PRESENCE optional },
-
-       ...
-}
-*/
-
-struct X2SetupFailure_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_Cause() { set(id_Cause); type=1;}
-               void select_id_TimeToWait() { set(id_TimeToWait); type=2;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=3;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_Cause)) { type = 1; return true; }
-                       else if(equal(id_TimeToWait)) { type = 2; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_Cause);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_TimeToWait);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_Cause() { set(ignore); type=1;}
-               void select_id_TimeToWait() { set(ignore); type=2;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=3;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(ignore)) { type = 1; return true; }
-                       else if(equal(ignore)) { type = 2; return true; }
-                       else if(equal(ignore)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               Cause& select_id_Cause() { return set<Cause>(1); }
-               Cause const* get_id_Cause() const { return get<Cause>(1); }
-               TimeToWait& select_id_TimeToWait() { return set<TimeToWait>(2); }
-               TimeToWait const* get_id_TimeToWait() const { return get<TimeToWait>(2); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(3); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(3); }
-               bool is_unknown() const { return type == 4; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<Cause>(); break;
-                       case 2: var.destroy<TimeToWait>(); break;
-                       case 3: var.destroy<CriticalityDiagnostics>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<Cause>(1);
-                       v.template operator()<TimeToWait>(2);
-                       v.template operator()<CriticalityDiagnostics>(3);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_Cause()); return true;
-                       case 2: v(select_id_TimeToWait()); return true;
-                       case 3: v(select_id_CriticalityDiagnostics()); return true;
-                       case 4: if(type != 4) {clear(); asn::base::set();} type = 4; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<Cause>()); return true;
-                       case 2: v(var.as<TimeToWait>()); return true;
-                       case 3: v(var.as<CriticalityDiagnostics>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(Cause)];
-                       char dummy2[sizeof(CriticalityDiagnostics)];
-                       char dummy3[sizeof(TimeToWait)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 4; }
-               void clear() {type = 0;}
-               void select_id_Cause() { set(mandatory); type=1;}
-               void select_id_TimeToWait() { set(optional); type=2;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=3;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(optional)) { type = 2; return true; }
-                       else if(equal(optional)) { type = 3; return true; }
-                       else { type = 4; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 4: type = 4; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-X2SetupFailure ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{X2SetupFailure-IEs}},
-       ...
-}
-*/
-
-struct X2SetupFailure : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "X2SetupFailure";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<X2SetupFailure_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<X2SetupFailure_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-X2SetupRequest-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-GlobalENB-ID                    CRITICALITY reject      TYPE GlobalENB-ID                       PRESENCE mandatory}|
-       { ID id-ServedCells                             CRITICALITY reject      TYPE ServedCells                        PRESENCE mandatory}|
-       { ID id-GUGroupIDList                   CRITICALITY reject      TYPE GUGroupIDList                      PRESENCE optional}|
-       { ID id-LHN-ID                                  CRITICALITY ignore      TYPE LHN-ID                                     PRESENCE optional},
-...
-}
-*/
-
-struct X2SetupRequest_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 5; }
-               void clear() {type = 0;}
-               void select_id_GlobalENB_ID() { set(id_GlobalENB_ID); type=1;}
-               void select_id_ServedCells() { set(id_ServedCells); type=2;}
-               void select_id_GUGroupIDList() { set(id_GUGroupIDList); type=3;}
-               void select_id_LHN_ID() { set(id_LHN_ID); type=4;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_GlobalENB_ID)) { type = 1; return true; }
-                       else if(equal(id_ServedCells)) { type = 2; return true; }
-                       else if(equal(id_GUGroupIDList)) { type = 3; return true; }
-                       else if(equal(id_LHN_ID)) { type = 4; return true; }
-                       else { type = 5; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_GlobalENB_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_ServedCells);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_GUGroupIDList);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_LHN_ID);} return false;
-                       case 5: type = 5; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 5; }
-               void clear() {type = 0;}
-               void select_id_GlobalENB_ID() { set(reject); type=1;}
-               void select_id_ServedCells() { set(reject); type=2;}
-               void select_id_GUGroupIDList() { set(reject); type=3;}
-               void select_id_LHN_ID() { set(ignore); type=4;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(reject)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else { type = 5; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               GlobalENB_ID& select_id_GlobalENB_ID() { return set<GlobalENB_ID>(1); }
-               GlobalENB_ID const* get_id_GlobalENB_ID() const { return get<GlobalENB_ID>(1); }
-               ServedCells& select_id_ServedCells() { return set<ServedCells>(2); }
-               ServedCells const* get_id_ServedCells() const { return get<ServedCells>(2); }
-               GUGroupIDList& select_id_GUGroupIDList() { return set<GUGroupIDList>(3); }
-               GUGroupIDList const* get_id_GUGroupIDList() const { return get<GUGroupIDList>(3); }
-               LHN_ID& select_id_LHN_ID() { return set<LHN_ID>(4); }
-               LHN_ID const* get_id_LHN_ID() const { return get<LHN_ID>(4); }
-               bool is_unknown() const { return type == 5; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<GlobalENB_ID>(); break;
-                       case 2: var.destroy<ServedCells>(); break;
-                       case 3: var.destroy<GUGroupIDList>(); break;
-                       case 4: var.destroy<LHN_ID>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<GlobalENB_ID>(1);
-                       v.template operator()<ServedCells>(2);
-                       v.template operator()<GUGroupIDList>(3);
-                       v.template operator()<LHN_ID>(4);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_GlobalENB_ID()); return true;
-                       case 2: v(select_id_ServedCells()); return true;
-                       case 3: v(select_id_GUGroupIDList()); return true;
-                       case 4: v(select_id_LHN_ID()); return true;
-                       case 5: if(type != 5) {clear(); asn::base::set();} type = 5; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<GlobalENB_ID>()); return true;
-                       case 2: v(var.as<ServedCells>()); return true;
-                       case 3: v(var.as<GUGroupIDList>()); return true;
-                       case 4: v(var.as<LHN_ID>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(GUGroupIDList)];
-                       char dummy2[sizeof(GlobalENB_ID)];
-                       char dummy3[sizeof(LHN_ID)];
-                       char dummy4[sizeof(ServedCells)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 5; }
-               void clear() {type = 0;}
-               void select_id_GlobalENB_ID() { set(mandatory); type=1;}
-               void select_id_ServedCells() { set(mandatory); type=2;}
-               void select_id_GUGroupIDList() { set(optional); type=3;}
-               void select_id_LHN_ID() { set(optional); type=4;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(optional)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else { type = 5; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-X2SetupRequest ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{X2SetupRequest-IEs}},
-       ...
-}
-*/
-
-struct X2SetupRequest : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "X2SetupRequest";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<X2SetupRequest_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<X2SetupRequest_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};
-/*
-X2SetupResponse-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-GlobalENB-ID                            CRITICALITY reject      TYPE GlobalENB-ID                       PRESENCE mandatory}|
-       { ID id-ServedCells                                     CRITICALITY reject      TYPE ServedCells                        PRESENCE mandatory}|
-       { ID id-GUGroupIDList                           CRITICALITY reject      TYPE GUGroupIDList                      PRESENCE optional}|
-       { ID id-CriticalityDiagnostics          CRITICALITY ignore      TYPE CriticalityDiagnostics     PRESENCE optional}|
-       { ID id-LHN-ID                                          CRITICALITY ignore      TYPE LHN-ID                                     PRESENCE optional},
-       ...
-}
-*/
-
-struct X2SetupResponse_IEs
-{
-       struct id_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::id_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_GlobalENB_ID() { set(id_GlobalENB_ID); type=1;}
-               void select_id_ServedCells() { set(id_ServedCells); type=2;}
-               void select_id_GUGroupIDList() { set(id_GUGroupIDList); type=3;}
-               void select_id_CriticalityDiagnostics() { set(id_CriticalityDiagnostics); type=4;}
-               void select_id_LHN_ID() { set(id_LHN_ID); type=5;}
-               X2AP_PROTOCOL_IES::id_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(id_GlobalENB_ID)) { type = 1; return true; }
-                       else if(equal(id_ServedCells)) { type = 2; return true; }
-                       else if(equal(id_GUGroupIDList)) { type = 3; return true; }
-                       else if(equal(id_CriticalityDiagnostics)) { type = 4; return true; }
-                       else if(equal(id_LHN_ID)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(id_GlobalENB_ID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_ServedCells);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_GUGroupIDList);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_CriticalityDiagnostics);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_LHN_ID);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct criticality_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::criticality_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_GlobalENB_ID() { set(reject); type=1;}
-               void select_id_ServedCells() { set(reject); type=2;}
-               void select_id_GUGroupIDList() { set(reject); type=3;}
-               void select_id_CriticalityDiagnostics() { set(ignore); type=4;}
-               void select_id_LHN_ID() { set(ignore); type=5;}
-               X2AP_PROTOCOL_IES::criticality_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(reject)) { type = 1; return true; }
-                       else if(equal(reject)) { type = 2; return true; }
-                       else if(equal(reject)) { type = 3; return true; }
-                       else if(equal(ignore)) { type = 4; return true; }
-                       else if(equal(ignore)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(reject);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(ignore);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-       struct Value_t : asn::typefield<true>
-       {
-               ~Value_t()      {clear();}
-               size_t get_index() const {return type;}
-               GlobalENB_ID& select_id_GlobalENB_ID() { return set<GlobalENB_ID>(1); }
-               GlobalENB_ID const* get_id_GlobalENB_ID() const { return get<GlobalENB_ID>(1); }
-               ServedCells& select_id_ServedCells() { return set<ServedCells>(2); }
-               ServedCells const* get_id_ServedCells() const { return get<ServedCells>(2); }
-               GUGroupIDList& select_id_GUGroupIDList() { return set<GUGroupIDList>(3); }
-               GUGroupIDList const* get_id_GUGroupIDList() const { return get<GUGroupIDList>(3); }
-               CriticalityDiagnostics& select_id_CriticalityDiagnostics() { return set<CriticalityDiagnostics>(4); }
-               CriticalityDiagnostics const* get_id_CriticalityDiagnostics() const { return get<CriticalityDiagnostics>(4); }
-               LHN_ID& select_id_LHN_ID() { return set<LHN_ID>(5); }
-               LHN_ID const* get_id_LHN_ID() const { return get<LHN_ID>(5); }
-               bool is_unknown() const { return type == 6; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<GlobalENB_ID>(); break;
-                       case 2: var.destroy<ServedCells>(); break;
-                       case 3: var.destroy<GUGroupIDList>(); break;
-                       case 4: var.destroy<CriticalityDiagnostics>(); break;
-                       case 5: var.destroy<LHN_ID>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<GlobalENB_ID>(1);
-                       v.template operator()<ServedCells>(2);
-                       v.template operator()<GUGroupIDList>(3);
-                       v.template operator()<CriticalityDiagnostics>(4);
-                       v.template operator()<LHN_ID>(5);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_GlobalENB_ID()); return true;
-                       case 2: v(select_id_ServedCells()); return true;
-                       case 3: v(select_id_GUGroupIDList()); return true;
-                       case 4: v(select_id_CriticalityDiagnostics()); return true;
-                       case 5: v(select_id_LHN_ID()); return true;
-                       case 6: if(type != 6) {clear(); asn::base::set();} type = 6; return true;
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) return false;
-                       switch(type)
-                       {
-                       case 1: v(var.as<GlobalENB_ID>()); return true;
-                       case 2: v(var.as<ServedCells>()); return true;
-                       case 3: v(var.as<GUGroupIDList>()); return true;
-                       case 4: v(var.as<CriticalityDiagnostics>()); return true;
-                       case 5: v(var.as<LHN_ID>()); return true;
-                       }
-                       return false;
-
-               }
-               private:
-               template<class T> T& set(size_t index) {if(type != index) {clear(); type = index; return var.build<T>();} return var.as<T>();}
-               template<class T> T const* get(size_t index) const {if(type == index) {return &var.as<T>();} return nullptr;}
-               union union_type
-               {
-                       char dummy1[sizeof(CriticalityDiagnostics)];
-                       char dummy2[sizeof(GUGroupIDList)];
-                       char dummy3[sizeof(GlobalENB_ID)];
-                       char dummy4[sizeof(LHN_ID)];
-                       char dummy5[sizeof(ServedCells)];
-
-               };
-               asn::variant<sizeof(union_type)> var;
-               size_t type {0};
-
-       };
-       struct presence_t : asn::fixedtypefield<X2AP_PROTOCOL_IES::presence_t, true>
-       {
-               size_t get_index() const {return type;}
-               bool is_unknown() const { return type == 6; }
-               void clear() {type = 0;}
-               void select_id_GlobalENB_ID() { set(mandatory); type=1;}
-               void select_id_ServedCells() { set(mandatory); type=2;}
-               void select_id_GUGroupIDList() { set(optional); type=3;}
-               void select_id_CriticalityDiagnostics() { set(optional); type=4;}
-               void select_id_LHN_ID() { set(optional); type=5;}
-               X2AP_PROTOCOL_IES::presence_t const& ref_value() const {return ref_nested();}
-               template<typename V>  bool decode(V& v)
-               {
-                       clear();
-                       if(!v(ref_nested())) return false;
-                       if(equal(mandatory)) { type = 1; return true; }
-                       else if(equal(mandatory)) { type = 2; return true; }
-                       else if(equal(optional)) { type = 3; return true; }
-                       else if(equal(optional)) { type = 4; return true; }
-                       else if(equal(optional)) { type = 5; return true; }
-                       else { type = 6; return true;}
-                       return false;
-
-               }
-               template<typename V> bool encode(V& v) const
-               {
-                       return v(ref_nested());
-
-               }
-               protected:
-               template<typename V>  bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: type = 1; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(mandatory);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(optional);} return false;
-                       case 6: type = 6; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-X2SetupResponse ::= SEQUENCE {
-       protocolIEs             ProtocolIE-Container    {{X2SetupResponse-IEs}},
-       ...
-}
-*/
-
-struct X2SetupResponse : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "X2SetupResponse";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<X2SetupResponse_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<X2SetupResponse_IEs>;
-
-       };
-       protocolIEs_t& ref_protocolIEs() {return protocolIEs;}
-       protocolIEs_t const& ref_protocolIEs() const {return protocolIEs;}
-       template<typename V> void decode(V& v)
-       {
-               v(protocolIEs);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(protocolIEs);
-
-       };
-       void clear()
-       {
-               protocolIEs.clear();
-
-       };
-       private:
-       protocolIEs_t   protocolIEs;
-
-};