Generated C files for E2AP v2.0
[sim/e2-interface.git] / e2sim / previous / e2apv1sim / e2sim / src / ASN1 / generated / E2AP-PDU-Contents.hpp
diff --git a/e2sim/previous/e2apv1sim/e2sim/src/ASN1/generated/E2AP-PDU-Contents.hpp b/e2sim/previous/e2apv1sim/e2sim/src/ASN1/generated/E2AP-PDU-Contents.hpp
deleted file mode 100644 (file)
index e2073d1..0000000
+++ /dev/null
@@ -1,5512 +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 "E2AP-IEs.hpp"
-#include "X2AP-IEs.hpp"
-#include "X2AP-Constants.hpp"
-#include "X2AP-Containers.hpp"
-#include "E2AP-Constants.hpp"
-
-/*
-RANfunction-Item ::= SEQUENCE {
-       ranFunctionID                           RANfunctionID,
-       ranFunctionDefinition           RANfunctionDefinition,
-       ...
-}
-*/
-
-struct RANfunction_Item : asn::sequence<2, 0, true, 0>
-{
-       static constexpr const char* name() {return "RANfunction-Item";}
-       using parent_t = asn::sequence<2, 0, true, 0>;
-       struct ranFunctionID_t : RANfunctionID
-       {
-               static constexpr const char* name() {return "ranFunctionID_t";}
-               using parent_t = RANfunctionID;
-
-       };
-       ranFunctionID_t& ref_ranFunctionID() {return ranFunctionID;}
-       ranFunctionID_t const& ref_ranFunctionID() const {return ranFunctionID;}
-       struct ranFunctionDefinition_t : RANfunctionDefinition
-       {
-               static constexpr const char* name() {return "ranFunctionDefinition_t";}
-               using parent_t = RANfunctionDefinition;
-
-       };
-       ranFunctionDefinition_t& ref_ranFunctionDefinition() {return ranFunctionDefinition;}
-       ranFunctionDefinition_t const& ref_ranFunctionDefinition() const {return ranFunctionDefinition;}
-       template<typename V> void decode(V& v)
-       {
-               v(ranFunctionID);
-               v(ranFunctionDefinition);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(ranFunctionID);
-               v(ranFunctionDefinition);
-
-       };
-       void clear()
-       {
-               ranFunctionID.clear();
-               ranFunctionDefinition.clear();
-
-       };
-       private:
-       ranFunctionID_t ranFunctionID;
-       ranFunctionDefinition_t ranFunctionDefinition;
-
-};
-/*
-RANfunction-ItemIEs    X2AP-PROTOCOL-IES ::= {
-       { ID id-RANfunction-Item                        CRITICALITY ignore      TYPE RANfunction-Item                           PRESENCE mandatory },
-       ...
-}
-*/
-
-struct RANfunction_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_RANfunction_Item() { set(id_RANfunction_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_RANfunction_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_RANfunction_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_RANfunction_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;}
-               RANfunction_Item& select_id_RANfunction_Item() { return set<RANfunction_Item>(1); }
-               RANfunction_Item const* get_id_RANfunction_Item() const { return get<RANfunction_Item>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<RANfunction_Item>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<RANfunction_Item>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_RANfunction_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<RANfunction_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(RANfunction_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_RANfunction_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};
-
-       };
-
-};
-/*
-RANfunctionID-Item ::= SEQUENCE {
-       ranFunctionID                           RANfunctionID,
-       ...
-}
-*/
-
-struct RANfunctionID_Item : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "RANfunctionID-Item";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct ranFunctionID_t : RANfunctionID
-       {
-               static constexpr const char* name() {return "ranFunctionID_t";}
-               using parent_t = RANfunctionID;
-
-       };
-       ranFunctionID_t& ref_ranFunctionID() {return ranFunctionID;}
-       ranFunctionID_t const& ref_ranFunctionID() const {return ranFunctionID;}
-       template<typename V> void decode(V& v)
-       {
-               v(ranFunctionID);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(ranFunctionID);
-
-       };
-       void clear()
-       {
-               ranFunctionID.clear();
-
-       };
-       private:
-       ranFunctionID_t ranFunctionID;
-
-};
-/*
-RANfunctionID-ItemIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-RANfunctionID-Item                      CRITICALITY ignore              TYPE RANfunctionID-Item                 PRESENCE mandatory },
-       ...
-}
-*/
-
-struct RANfunctionID_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_RANfunctionID_Item() { set(id_RANfunctionID_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_RANfunctionID_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_RANfunctionID_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_RANfunctionID_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;}
-               RANfunctionID_Item& select_id_RANfunctionID_Item() { return set<RANfunctionID_Item>(1); }
-               RANfunctionID_Item const* get_id_RANfunctionID_Item() const { return get<RANfunctionID_Item>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<RANfunctionID_Item>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<RANfunctionID_Item>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_RANfunctionID_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<RANfunctionID_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(RANfunctionID_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_RANfunctionID_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};
-
-       };
-
-};
-/*
-RANfunctionIDcause-Item ::= SEQUENCE {
-       ranFunctionID                           RANfunctionID,
-       ricCause                                RICcause,
-       ...
-}
-*/
-
-struct RANfunctionIDcause_Item : asn::sequence<2, 0, true, 0>
-{
-       static constexpr const char* name() {return "RANfunctionIDcause-Item";}
-       using parent_t = asn::sequence<2, 0, true, 0>;
-       struct ranFunctionID_t : RANfunctionID
-       {
-               static constexpr const char* name() {return "ranFunctionID_t";}
-               using parent_t = RANfunctionID;
-
-       };
-       ranFunctionID_t& ref_ranFunctionID() {return ranFunctionID;}
-       ranFunctionID_t const& ref_ranFunctionID() const {return ranFunctionID;}
-       struct ricCause_t : RICcause
-       {
-               static constexpr const char* name() {return "ricCause_t";}
-               using parent_t = RICcause;
-
-       };
-       ricCause_t& ref_ricCause() {return ricCause;}
-       ricCause_t const& ref_ricCause() const {return ricCause;}
-       template<typename V> void decode(V& v)
-       {
-               v(ranFunctionID);
-               v(ricCause);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(ranFunctionID);
-               v(ricCause);
-
-       };
-       void clear()
-       {
-               ranFunctionID.clear();
-               ricCause.clear();
-
-       };
-       private:
-       ranFunctionID_t ranFunctionID;
-       ricCause_t      ricCause;
-
-};
-/*
-RANfunctionIDcause-ItemIEs     X2AP-PROTOCOL-IES ::= {
-       { ID id-RANfunctionIEcause-Item         CRITICALITY ignore      TYPE RANfunctionIDcause-Item            PRESENCE mandatory },
-       ...
-}
-*/
-
-struct RANfunctionIDcause_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_RANfunctionIEcause_Item() { set(id_RANfunctionIEcause_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_RANfunctionIEcause_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_RANfunctionIEcause_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_RANfunctionIEcause_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;}
-               RANfunctionIDcause_Item& select_id_RANfunctionIEcause_Item() { return set<RANfunctionIDcause_Item>(1); }
-               RANfunctionIDcause_Item const* get_id_RANfunctionIEcause_Item() const { return get<RANfunctionIDcause_Item>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<RANfunctionIDcause_Item>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<RANfunctionIDcause_Item>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_RANfunctionIEcause_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<RANfunctionIDcause_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(RANfunctionIDcause_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_RANfunctionIEcause_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};
-
-       };
-
-};
-/*
-RANfunctions-List ::= SEQUENCE (SIZE(0..maxofRANfunctionID)) OF ProtocolIE-Single-Container { {RANfunction-ItemIEs} }
-*/
-
-struct RANfunctions_List_elm : ProtocolIE_Single_Container<RANfunction_ItemIEs>
-{
-       static constexpr const char* name() {return "RANfunctions_List_elm";}
-       using parent_t = ProtocolIE_Single_Container<RANfunction_ItemIEs>;
-
-};
-struct RANfunctions_List : asn::sequenceof<RANfunctions_List_elm>
-{
-       static constexpr const char* name() {return "RANfunctions-List";}
-       using parent_t = asn::sequenceof<RANfunctions_List_elm>;
-       using constraint_t = asn::constraints<false,asn::span<0,  maxofRANfunctionID >>;
-
-};
-/*
-RANfunctionsID-List ::= SEQUENCE (SIZE(0..maxofRANfunctionID)) OF ProtocolIE-Single-Container{{RANfunctionID-ItemIEs}}
-*/
-
-struct RANfunctionsID_List_elm : ProtocolIE_Single_Container<RANfunctionID_ItemIEs>
-{
-       static constexpr const char* name() {return "RANfunctionsID_List_elm";}
-       using parent_t = ProtocolIE_Single_Container<RANfunctionID_ItemIEs>;
-
-};
-struct RANfunctionsID_List : asn::sequenceof<RANfunctionsID_List_elm>
-{
-       static constexpr const char* name() {return "RANfunctionsID-List";}
-       using parent_t = asn::sequenceof<RANfunctionsID_List_elm>;
-       using constraint_t = asn::constraints<false,asn::span<0,  maxofRANfunctionID >>;
-
-};
-/*
-RANfunctionsIDcause-List ::= SEQUENCE (SIZE(0..maxofRANfunctionID)) OF ProtocolIE-Single-Container { {RANfunctionIDcause-ItemIEs} }
-*/
-
-struct RANfunctionsIDcause_List_elm : ProtocolIE_Single_Container<RANfunctionIDcause_ItemIEs>
-{
-       static constexpr const char* name() {return "RANfunctionsIDcause_List_elm";}
-       using parent_t = ProtocolIE_Single_Container<RANfunctionIDcause_ItemIEs>;
-
-};
-struct RANfunctionsIDcause_List : asn::sequenceof<RANfunctionsIDcause_List_elm>
-{
-       static constexpr const char* name() {return "RANfunctionsIDcause-List";}
-       using parent_t = asn::sequenceof<RANfunctionsIDcause_List_elm>;
-       using constraint_t = asn::constraints<false,asn::span<0,  maxofRANfunctionID >>;
-
-};
-/*
-RICaction-Admitted-Item ::= SEQUENCE {
-       ricActionID                                     RICactionID,
-       ...
-}
-*/
-
-struct RICaction_Admitted_Item : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "RICaction-Admitted-Item";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct ricActionID_t : RICactionID
-       {
-               static constexpr const char* name() {return "ricActionID_t";}
-               using parent_t = RICactionID;
-
-       };
-       ricActionID_t& ref_ricActionID() {return ricActionID;}
-       ricActionID_t const& ref_ricActionID() const {return ricActionID;}
-       template<typename V> void decode(V& v)
-       {
-               v(ricActionID);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(ricActionID);
-
-       };
-       void clear()
-       {
-               ricActionID.clear();
-
-       };
-       private:
-       ricActionID_t   ricActionID;
-
-};
-/*
-RICaction-Admitted-ItemIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-RICaction-Admitted-Item         CRITICALITY ignore              TYPE RICaction-Admitted-Item    PRESENCE mandatory },
-       ...
-}
-*/
-
-struct RICaction_Admitted_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_RICaction_Admitted_Item() { set(id_RICaction_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_RICaction_Admitted_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_RICaction_Admitted_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_RICaction_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; }
-                       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;}
-               RICaction_Admitted_Item& select_id_RICaction_Admitted_Item() { return set<RICaction_Admitted_Item>(1); }
-               RICaction_Admitted_Item const* get_id_RICaction_Admitted_Item() const { return get<RICaction_Admitted_Item>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<RICaction_Admitted_Item>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<RICaction_Admitted_Item>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_RICaction_Admitted_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<RICaction_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(RICaction_Admitted_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_RICaction_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; }
-                       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};
-
-       };
-
-};
-/*
-RICaction-Admitted-List ::= SEQUENCE (SIZE(1..maxofRICactionID)) OF ProtocolIE-Single-Container{{RICaction-Admitted-ItemIEs}}
-*/
-
-struct RICaction_Admitted_List_elm : ProtocolIE_Single_Container<RICaction_Admitted_ItemIEs>
-{
-       static constexpr const char* name() {return "RICaction_Admitted_List_elm";}
-       using parent_t = ProtocolIE_Single_Container<RICaction_Admitted_ItemIEs>;
-
-};
-struct RICaction_Admitted_List : asn::sequenceof<RICaction_Admitted_List_elm>
-{
-       static constexpr const char* name() {return "RICaction-Admitted-List";}
-       using parent_t = asn::sequenceof<RICaction_Admitted_List_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxofRICactionID >>;
-
-};
-/*
-RICaction-NotAdmitted-Item ::= SEQUENCE {
-       ricActionID                                     RICactionID,
-       ricCause                                        RICcause,
-       ...
-}
-*/
-
-struct RICaction_NotAdmitted_Item : asn::sequence<2, 0, true, 0>
-{
-       static constexpr const char* name() {return "RICaction-NotAdmitted-Item";}
-       using parent_t = asn::sequence<2, 0, true, 0>;
-       struct ricActionID_t : RICactionID
-       {
-               static constexpr const char* name() {return "ricActionID_t";}
-               using parent_t = RICactionID;
-
-       };
-       ricActionID_t& ref_ricActionID() {return ricActionID;}
-       ricActionID_t const& ref_ricActionID() const {return ricActionID;}
-       struct ricCause_t : RICcause
-       {
-               static constexpr const char* name() {return "ricCause_t";}
-               using parent_t = RICcause;
-
-       };
-       ricCause_t& ref_ricCause() {return ricCause;}
-       ricCause_t const& ref_ricCause() const {return ricCause;}
-       template<typename V> void decode(V& v)
-       {
-               v(ricActionID);
-               v(ricCause);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(ricActionID);
-               v(ricCause);
-
-       };
-       void clear()
-       {
-               ricActionID.clear();
-               ricCause.clear();
-
-       };
-       private:
-       ricActionID_t   ricActionID;
-       ricCause_t      ricCause;
-
-};
-/*
-RICaction-NotAdmitted-ItemIEs X2AP-PROTOCOL-IES ::= {
-       { ID id-RICaction-NotAdmitted-Item      CRITICALITY ignore      TYPE RICaction-NotAdmitted-Item         PRESENCE mandatory },
-       ...
-}
-*/
-
-struct RICaction_NotAdmitted_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_RICaction_NotAdmitted_Item() { set(id_RICaction_NotAdmitted_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_RICaction_NotAdmitted_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_RICaction_NotAdmitted_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_RICaction_NotAdmitted_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;}
-               RICaction_NotAdmitted_Item& select_id_RICaction_NotAdmitted_Item() { return set<RICaction_NotAdmitted_Item>(1); }
-               RICaction_NotAdmitted_Item const* get_id_RICaction_NotAdmitted_Item() const { return get<RICaction_NotAdmitted_Item>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<RICaction_NotAdmitted_Item>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<RICaction_NotAdmitted_Item>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_RICaction_NotAdmitted_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<RICaction_NotAdmitted_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(RICaction_NotAdmitted_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_RICaction_NotAdmitted_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};
-
-       };
-
-};
-/*
-RICaction-NotAdmitted-List ::= SEQUENCE (SIZE(0..maxofRICactionID)) OF ProtocolIE-Single-Container { {RICaction-NotAdmitted-ItemIEs} }
-*/
-
-struct RICaction_NotAdmitted_List_elm : ProtocolIE_Single_Container<RICaction_NotAdmitted_ItemIEs>
-{
-       static constexpr const char* name() {return "RICaction_NotAdmitted_List_elm";}
-       using parent_t = ProtocolIE_Single_Container<RICaction_NotAdmitted_ItemIEs>;
-
-};
-struct RICaction_NotAdmitted_List : asn::sequenceof<RICaction_NotAdmitted_List_elm>
-{
-       static constexpr const char* name() {return "RICaction-NotAdmitted-List";}
-       using parent_t = asn::sequenceof<RICaction_NotAdmitted_List_elm>;
-       using constraint_t = asn::constraints<false,asn::span<0,  maxofRICactionID >>;
-
-};
-/*
-RICaction-ToBeSetup-Item ::= SEQUENCE {
-       ricActionID                                     RICactionID,
-       ricActionType                           RICactionType,
-       ricActionDefinition                     RICactionDefinition     OPTIONAL,
-       ricSubsequentAction                     RICsubsequentAction     OPTIONAL,
-       ...
-}
-*/
-
-struct RICaction_ToBeSetup_Item : asn::sequence<4, 0, true, 2>
-{
-       static constexpr const char* name() {return "RICaction-ToBeSetup-Item";}
-       using parent_t = asn::sequence<4, 0, true, 2>;
-       struct ricActionID_t : RICactionID
-       {
-               static constexpr const char* name() {return "ricActionID_t";}
-               using parent_t = RICactionID;
-
-       };
-       ricActionID_t& ref_ricActionID() {return ricActionID;}
-       ricActionID_t const& ref_ricActionID() const {return ricActionID;}
-       struct ricActionType_t : RICactionType
-       {
-               static constexpr const char* name() {return "ricActionType_t";}
-               using parent_t = RICactionType;
-
-       };
-       ricActionType_t& ref_ricActionType() {return ricActionType;}
-       ricActionType_t const& ref_ricActionType() const {return ricActionType;}
-       struct ricActionDefinition_t : RICactionDefinition
-       {
-               static constexpr const char* name() {return "ricActionDefinition_t";}
-               using parent_t = RICactionDefinition;
-               static constexpr bool optional = true;
-
-       };
-       ricActionDefinition_t& set_ricActionDefinition() { ricActionDefinition.setpresent(true); return ricActionDefinition;}
-       ricActionDefinition_t const* get_ricActionDefinition() const {return ricActionDefinition.is_valid() ? &ricActionDefinition : nullptr;}
-       struct ricSubsequentAction_t : RICsubsequentAction
-       {
-               static constexpr const char* name() {return "ricSubsequentAction_t";}
-               using parent_t = RICsubsequentAction;
-               static constexpr bool optional = true;
-
-       };
-       ricSubsequentAction_t& set_ricSubsequentAction() { ricSubsequentAction.setpresent(true); return ricSubsequentAction;}
-       ricSubsequentAction_t const* get_ricSubsequentAction() const {return ricSubsequentAction.is_valid() ? &ricSubsequentAction : nullptr;}
-       template<typename V> void decode(V& v)
-       {
-               v(ricActionID);
-               v(ricActionType);
-               v(ricActionDefinition);
-               v(ricSubsequentAction);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(ricActionID);
-               v(ricActionType);
-               v(ricActionDefinition);
-               v(ricSubsequentAction);
-
-       };
-       void clear()
-       {
-               ricActionID.clear();
-               ricActionType.clear();
-               ricActionDefinition.clear();
-               ricSubsequentAction.clear();
-
-       };
-       private:
-       ricActionID_t   ricActionID;
-       ricActionType_t ricActionType;
-       ricActionDefinition_t   ricActionDefinition;
-       ricSubsequentAction_t   ricSubsequentAction;
-
-};
-/*
-RICaction-ToBeSetup-ItemIEs    X2AP-PROTOCOL-IES ::= {
-       { ID id-RICaction-ToBeSetup-Item         CRITICALITY ignore     TYPE RICaction-ToBeSetup-Item   PRESENCE mandatory },
-       ...
-}
-*/
-
-struct RICaction_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_RICaction_ToBeSetup_Item() { set(id_RICaction_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_RICaction_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_RICaction_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_RICaction_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;}
-               RICaction_ToBeSetup_Item& select_id_RICaction_ToBeSetup_Item() { return set<RICaction_ToBeSetup_Item>(1); }
-               RICaction_ToBeSetup_Item const* get_id_RICaction_ToBeSetup_Item() const { return get<RICaction_ToBeSetup_Item>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<RICaction_ToBeSetup_Item>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<RICaction_ToBeSetup_Item>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_RICaction_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<RICaction_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(RICaction_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_RICaction_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};
-
-       };
-
-};
-/*
-RICactions-ToBeSetup-List ::= SEQUENCE (SIZE(1..maxofRICactionID)) OF ProtocolIE-Single-Container { {RICaction-ToBeSetup-ItemIEs} }
-*/
-
-struct RICactions_ToBeSetup_List_elm : ProtocolIE_Single_Container<RICaction_ToBeSetup_ItemIEs>
-{
-       static constexpr const char* name() {return "RICactions_ToBeSetup_List_elm";}
-       using parent_t = ProtocolIE_Single_Container<RICaction_ToBeSetup_ItemIEs>;
-
-};
-struct RICactions_ToBeSetup_List : asn::sequenceof<RICactions_ToBeSetup_List_elm>
-{
-       static constexpr const char* name() {return "RICactions-ToBeSetup-List";}
-       using parent_t = asn::sequenceof<RICactions_ToBeSetup_List_elm>;
-       using constraint_t = asn::constraints<false,asn::span<1,  maxofRICactionID >>;
-
-};
-/*
-RICcontrolAcknowledge-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-RICrequestID                            CRITICALITY reject      TYPE RICrequestID                                       PRESENCE mandatory}|
-       { ID id-RANfunctionID                           CRITICALITY reject      TYPE RANfunctionID                                      PRESENCE mandatory}|
-       { ID id-RICcallProcessID                        CRITICALITY reject      TYPE RICcallProcessID                           PRESENCE optional}|
-       { ID id-RICcontrolStatus                        CRITICALITY reject      TYPE RICcontrolStatus                           PRESENCE mandatory},
-    ...
-}
-*/
-
-struct RICcontrolAcknowledge_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_RICrequestID() { set(id_RICrequestID); type=1;}
-               void select_id_RANfunctionID() { set(id_RANfunctionID); type=2;}
-               void select_id_RICcallProcessID() { set(id_RICcallProcessID); type=3;}
-               void select_id_RICcontrolStatus() { set(id_RICcontrolStatus); 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_RICrequestID)) { type = 1; return true; }
-                       else if(equal(id_RANfunctionID)) { type = 2; return true; }
-                       else if(equal(id_RICcallProcessID)) { type = 3; return true; }
-                       else if(equal(id_RICcontrolStatus)) { 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_RICrequestID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_RANfunctionID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_RICcallProcessID);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_RICcontrolStatus);} 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_RICrequestID() { set(reject); type=1;}
-               void select_id_RANfunctionID() { set(reject); type=2;}
-               void select_id_RICcallProcessID() { set(reject); type=3;}
-               void select_id_RICcontrolStatus() { 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;}
-               RICrequestID& select_id_RICrequestID() { return set<RICrequestID>(1); }
-               RICrequestID const* get_id_RICrequestID() const { return get<RICrequestID>(1); }
-               RANfunctionID& select_id_RANfunctionID() { return set<RANfunctionID>(2); }
-               RANfunctionID const* get_id_RANfunctionID() const { return get<RANfunctionID>(2); }
-               RICcallProcessID& select_id_RICcallProcessID() { return set<RICcallProcessID>(3); }
-               RICcallProcessID const* get_id_RICcallProcessID() const { return get<RICcallProcessID>(3); }
-               RICcontrolStatus& select_id_RICcontrolStatus() { return set<RICcontrolStatus>(4); }
-               RICcontrolStatus const* get_id_RICcontrolStatus() const { return get<RICcontrolStatus>(4); }
-               bool is_unknown() const { return type == 5; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<RICrequestID>(); break;
-                       case 2: var.destroy<RANfunctionID>(); break;
-                       case 3: var.destroy<RICcallProcessID>(); break;
-                       case 4: var.destroy<RICcontrolStatus>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<RICrequestID>(1);
-                       v.template operator()<RANfunctionID>(2);
-                       v.template operator()<RICcallProcessID>(3);
-                       v.template operator()<RICcontrolStatus>(4);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_RICrequestID()); return true;
-                       case 2: v(select_id_RANfunctionID()); return true;
-                       case 3: v(select_id_RICcallProcessID()); return true;
-                       case 4: v(select_id_RICcontrolStatus()); 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<RICrequestID>()); return true;
-                       case 2: v(var.as<RANfunctionID>()); return true;
-                       case 3: v(var.as<RICcallProcessID>()); return true;
-                       case 4: v(var.as<RICcontrolStatus>()); 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(RANfunctionID)];
-                       char dummy2[sizeof(RICcallProcessID)];
-                       char dummy3[sizeof(RICcontrolStatus)];
-                       char dummy4[sizeof(RICrequestID)];
-
-               };
-               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_RICrequestID() { set(mandatory); type=1;}
-               void select_id_RANfunctionID() { set(mandatory); type=2;}
-               void select_id_RICcallProcessID() { set(optional); type=3;}
-               void select_id_RICcontrolStatus() { 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(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(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; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-RICcontrolAcknowledge ::= SEQUENCE {
-       protocolIEs                                     ProtocolIE-Container    {{RICcontrolAcknowledge-IEs}},
-       ...
-}
-*/
-
-struct RICcontrolAcknowledge : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "RICcontrolAcknowledge";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<RICcontrolAcknowledge_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<RICcontrolAcknowledge_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;
-
-};
-/*
-RICcontrolFailure-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-RICrequestID                            CRITICALITY reject      TYPE RICrequestID                                       PRESENCE mandatory}|
-       { ID id-RANfunctionID                           CRITICALITY reject      TYPE RANfunctionID                                      PRESENCE mandatory}|
-       { ID id-RICcallProcessID                        CRITICALITY reject      TYPE RICcallProcessID                           PRESENCE optional}|
-       { ID id-RICcause                                    CRITICALITY reject  TYPE RICcause                                   PRESENCE mandatory},
-    ...
-}
-*/
-
-struct RICcontrolFailure_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_RICrequestID() { set(id_RICrequestID); type=1;}
-               void select_id_RANfunctionID() { set(id_RANfunctionID); type=2;}
-               void select_id_RICcallProcessID() { set(id_RICcallProcessID); type=3;}
-               void select_id_RICcause() { set(id_RICcause); 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_RICrequestID)) { type = 1; return true; }
-                       else if(equal(id_RANfunctionID)) { type = 2; return true; }
-                       else if(equal(id_RICcallProcessID)) { type = 3; return true; }
-                       else if(equal(id_RICcause)) { 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_RICrequestID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_RANfunctionID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_RICcallProcessID);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_RICcause);} 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_RICrequestID() { set(reject); type=1;}
-               void select_id_RANfunctionID() { set(reject); type=2;}
-               void select_id_RICcallProcessID() { set(reject); type=3;}
-               void select_id_RICcause() { 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;}
-               RICrequestID& select_id_RICrequestID() { return set<RICrequestID>(1); }
-               RICrequestID const* get_id_RICrequestID() const { return get<RICrequestID>(1); }
-               RANfunctionID& select_id_RANfunctionID() { return set<RANfunctionID>(2); }
-               RANfunctionID const* get_id_RANfunctionID() const { return get<RANfunctionID>(2); }
-               RICcallProcessID& select_id_RICcallProcessID() { return set<RICcallProcessID>(3); }
-               RICcallProcessID const* get_id_RICcallProcessID() const { return get<RICcallProcessID>(3); }
-               RICcause& select_id_RICcause() { return set<RICcause>(4); }
-               RICcause const* get_id_RICcause() const { return get<RICcause>(4); }
-               bool is_unknown() const { return type == 5; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<RICrequestID>(); break;
-                       case 2: var.destroy<RANfunctionID>(); break;
-                       case 3: var.destroy<RICcallProcessID>(); break;
-                       case 4: var.destroy<RICcause>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<RICrequestID>(1);
-                       v.template operator()<RANfunctionID>(2);
-                       v.template operator()<RICcallProcessID>(3);
-                       v.template operator()<RICcause>(4);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_RICrequestID()); return true;
-                       case 2: v(select_id_RANfunctionID()); return true;
-                       case 3: v(select_id_RICcallProcessID()); return true;
-                       case 4: v(select_id_RICcause()); 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<RICrequestID>()); return true;
-                       case 2: v(var.as<RANfunctionID>()); return true;
-                       case 3: v(var.as<RICcallProcessID>()); return true;
-                       case 4: v(var.as<RICcause>()); 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(RANfunctionID)];
-                       char dummy2[sizeof(RICcallProcessID)];
-                       char dummy3[sizeof(RICcause)];
-                       char dummy4[sizeof(RICrequestID)];
-
-               };
-               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_RICrequestID() { set(mandatory); type=1;}
-               void select_id_RANfunctionID() { set(mandatory); type=2;}
-               void select_id_RICcallProcessID() { set(optional); type=3;}
-               void select_id_RICcause() { 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(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(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; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-RICcontrolFailure ::= SEQUENCE {
-       protocolIEs                                     ProtocolIE-Container    {{RICcontrolFailure-IEs}},
-       ...
-}
-*/
-
-struct RICcontrolFailure : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "RICcontrolFailure";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<RICcontrolFailure_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<RICcontrolFailure_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;
-
-};
-/*
-RICcontrolRequest-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-RICrequestID                            CRITICALITY reject      TYPE RICrequestID                                       PRESENCE mandatory}|
-       { ID id-RANfunctionID                           CRITICALITY reject      TYPE RANfunctionID                                      PRESENCE mandatory}|
-       { ID id-RICcallProcessID                        CRITICALITY reject      TYPE RICcallProcessID                           PRESENCE optional}|
-       { ID id-RICcontrolHeader                        CRITICALITY reject      TYPE RICcontrolHeader                           PRESENCE mandatory}|
-       { ID id-RICcontrolMessage                       CRITICALITY reject      TYPE RICcontrolMessage                          PRESENCE mandatory}|
-    { ID id-RICcontrolAckRequest               CRITICALITY reject      TYPE RICcontrolAckRequest               PRESENCE optional},
-    ...
-}
-*/
-
-struct RICcontrolRequest_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_RICrequestID() { set(id_RICrequestID); type=1;}
-               void select_id_RANfunctionID() { set(id_RANfunctionID); type=2;}
-               void select_id_RICcallProcessID() { set(id_RICcallProcessID); type=3;}
-               void select_id_RICcontrolHeader() { set(id_RICcontrolHeader); type=4;}
-               void select_id_RICcontrolMessage() { set(id_RICcontrolMessage); type=5;}
-               void select_id_RICcontrolAckRequest() { set(id_RICcontrolAckRequest); 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_RICrequestID)) { type = 1; return true; }
-                       else if(equal(id_RANfunctionID)) { type = 2; return true; }
-                       else if(equal(id_RICcallProcessID)) { type = 3; return true; }
-                       else if(equal(id_RICcontrolHeader)) { type = 4; return true; }
-                       else if(equal(id_RICcontrolMessage)) { type = 5; return true; }
-                       else if(equal(id_RICcontrolAckRequest)) { 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_RICrequestID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_RANfunctionID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_RICcallProcessID);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_RICcontrolHeader);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_RICcontrolMessage);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(id_RICcontrolAckRequest);} 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_RICrequestID() { set(reject); type=1;}
-               void select_id_RANfunctionID() { set(reject); type=2;}
-               void select_id_RICcallProcessID() { set(reject); type=3;}
-               void select_id_RICcontrolHeader() { set(reject); type=4;}
-               void select_id_RICcontrolMessage() { set(reject); type=5;}
-               void select_id_RICcontrolAckRequest() { 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;}
-               RICrequestID& select_id_RICrequestID() { return set<RICrequestID>(1); }
-               RICrequestID const* get_id_RICrequestID() const { return get<RICrequestID>(1); }
-               RANfunctionID& select_id_RANfunctionID() { return set<RANfunctionID>(2); }
-               RANfunctionID const* get_id_RANfunctionID() const { return get<RANfunctionID>(2); }
-               RICcallProcessID& select_id_RICcallProcessID() { return set<RICcallProcessID>(3); }
-               RICcallProcessID const* get_id_RICcallProcessID() const { return get<RICcallProcessID>(3); }
-               RICcontrolHeader& select_id_RICcontrolHeader() { return set<RICcontrolHeader>(4); }
-               RICcontrolHeader const* get_id_RICcontrolHeader() const { return get<RICcontrolHeader>(4); }
-               RICcontrolMessage& select_id_RICcontrolMessage() { return set<RICcontrolMessage>(5); }
-               RICcontrolMessage const* get_id_RICcontrolMessage() const { return get<RICcontrolMessage>(5); }
-               RICcontrolAckRequest& select_id_RICcontrolAckRequest() { return set<RICcontrolAckRequest>(6); }
-               RICcontrolAckRequest const* get_id_RICcontrolAckRequest() const { return get<RICcontrolAckRequest>(6); }
-               bool is_unknown() const { return type == 7; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<RICrequestID>(); break;
-                       case 2: var.destroy<RANfunctionID>(); break;
-                       case 3: var.destroy<RICcallProcessID>(); break;
-                       case 4: var.destroy<RICcontrolHeader>(); break;
-                       case 5: var.destroy<RICcontrolMessage>(); break;
-                       case 6: var.destroy<RICcontrolAckRequest>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<RICrequestID>(1);
-                       v.template operator()<RANfunctionID>(2);
-                       v.template operator()<RICcallProcessID>(3);
-                       v.template operator()<RICcontrolHeader>(4);
-                       v.template operator()<RICcontrolMessage>(5);
-                       v.template operator()<RICcontrolAckRequest>(6);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_RICrequestID()); return true;
-                       case 2: v(select_id_RANfunctionID()); return true;
-                       case 3: v(select_id_RICcallProcessID()); return true;
-                       case 4: v(select_id_RICcontrolHeader()); return true;
-                       case 5: v(select_id_RICcontrolMessage()); return true;
-                       case 6: v(select_id_RICcontrolAckRequest()); 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<RICrequestID>()); return true;
-                       case 2: v(var.as<RANfunctionID>()); return true;
-                       case 3: v(var.as<RICcallProcessID>()); return true;
-                       case 4: v(var.as<RICcontrolHeader>()); return true;
-                       case 5: v(var.as<RICcontrolMessage>()); return true;
-                       case 6: v(var.as<RICcontrolAckRequest>()); 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(RANfunctionID)];
-                       char dummy2[sizeof(RICcallProcessID)];
-                       char dummy3[sizeof(RICcontrolAckRequest)];
-                       char dummy4[sizeof(RICcontrolHeader)];
-                       char dummy5[sizeof(RICcontrolMessage)];
-                       char dummy6[sizeof(RICrequestID)];
-
-               };
-               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_RICrequestID() { set(mandatory); type=1;}
-               void select_id_RANfunctionID() { set(mandatory); type=2;}
-               void select_id_RICcallProcessID() { set(optional); type=3;}
-               void select_id_RICcontrolHeader() { set(mandatory); type=4;}
-               void select_id_RICcontrolMessage() { set(mandatory); type=5;}
-               void select_id_RICcontrolAckRequest() { 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(mandatory)) { type = 4; return true; }
-                       else if(equal(mandatory)) { 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(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; return v(ref_nested());
-                       ref_nested().clear();
-                       }
-                       return false;
-
-               }
-               template<typename V> bool encode(size_t index, V& v) const
-               {
-                       if(index != type) {return false;} return v(ref_nested());
-
-               }
-               private:
-               size_t type {0};
-
-       };
-
-};
-/*
-RICcontrolRequest ::= SEQUENCE {
-       protocolIEs                                     ProtocolIE-Container    {{RICcontrolRequest-IEs}},
-       ...
-}
-*/
-
-struct RICcontrolRequest : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "RICcontrolRequest";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<RICcontrolRequest_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<RICcontrolRequest_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;
-
-};
-/*
-RICindication-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-RICrequestID                            CRITICALITY reject      TYPE RICrequestID                                       PRESENCE mandatory}|
-       { ID id-RANfunctionID                           CRITICALITY reject      TYPE RANfunctionID                                      PRESENCE mandatory}|
-       { ID id-RICactionID                                     CRITICALITY reject      TYPE RICactionID                                        PRESENCE mandatory}|
-       { ID id-RICindicationSN                         CRITICALITY reject      TYPE RICindicationSN                            PRESENCE mandatory}|
-    { ID id-RICindicationType                  CRITICALITY reject      TYPE RICindicationType                          PRESENCE mandatory}|
-       { ID id-RICindicationHeader                     CRITICALITY reject      TYPE RICindicationHeader                        PRESENCE mandatory}|
-       { ID id-RICindicationMessage            CRITICALITY reject      TYPE RICindicationMessage           PRESENCE mandatory} |
-       { ID id-RICcallProcessID                        CRITICALITY reject      TYPE RICcallProcessID                           PRESENCE optional},
-    ...
-}
-*/
-
-struct RICindication_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_RICrequestID() { set(id_RICrequestID); type=1;}
-               void select_id_RANfunctionID() { set(id_RANfunctionID); type=2;}
-               void select_id_RICactionID() { set(id_RICactionID); type=3;}
-               void select_id_RICindicationSN() { set(id_RICindicationSN); type=4;}
-               void select_id_RICindicationType() { set(id_RICindicationType); type=5;}
-               void select_id_RICindicationHeader() { set(id_RICindicationHeader); type=6;}
-               void select_id_RICindicationMessage() { set(id_RICindicationMessage); type=7;}
-               void select_id_RICcallProcessID() { set(id_RICcallProcessID); 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_RICrequestID)) { type = 1; return true; }
-                       else if(equal(id_RANfunctionID)) { type = 2; return true; }
-                       else if(equal(id_RICactionID)) { type = 3; return true; }
-                       else if(equal(id_RICindicationSN)) { type = 4; return true; }
-                       else if(equal(id_RICindicationType)) { type = 5; return true; }
-                       else if(equal(id_RICindicationHeader)) { type = 6; return true; }
-                       else if(equal(id_RICindicationMessage)) { type = 7; return true; }
-                       else if(equal(id_RICcallProcessID)) { 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_RICrequestID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_RANfunctionID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_RICactionID);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_RICindicationSN);} return false;
-                       case 5: type = 5; if(v(ref_nested())) { return equal(id_RICindicationType);} return false;
-                       case 6: type = 6; if(v(ref_nested())) { return equal(id_RICindicationHeader);} return false;
-                       case 7: type = 7; if(v(ref_nested())) { return equal(id_RICindicationMessage);} return false;
-                       case 8: type = 8; if(v(ref_nested())) { return equal(id_RICcallProcessID);} 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_RICrequestID() { set(reject); type=1;}
-               void select_id_RANfunctionID() { set(reject); type=2;}
-               void select_id_RICactionID() { set(reject); type=3;}
-               void select_id_RICindicationSN() { set(reject); type=4;}
-               void select_id_RICindicationType() { set(reject); type=5;}
-               void select_id_RICindicationHeader() { set(reject); type=6;}
-               void select_id_RICindicationMessage() { set(reject); type=7;}
-               void select_id_RICcallProcessID() { 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(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 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(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; 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;}
-               RICrequestID& select_id_RICrequestID() { return set<RICrequestID>(1); }
-               RICrequestID const* get_id_RICrequestID() const { return get<RICrequestID>(1); }
-               RANfunctionID& select_id_RANfunctionID() { return set<RANfunctionID>(2); }
-               RANfunctionID const* get_id_RANfunctionID() const { return get<RANfunctionID>(2); }
-               RICactionID& select_id_RICactionID() { return set<RICactionID>(3); }
-               RICactionID const* get_id_RICactionID() const { return get<RICactionID>(3); }
-               RICindicationSN& select_id_RICindicationSN() { return set<RICindicationSN>(4); }
-               RICindicationSN const* get_id_RICindicationSN() const { return get<RICindicationSN>(4); }
-               RICindicationType& select_id_RICindicationType() { return set<RICindicationType>(5); }
-               RICindicationType const* get_id_RICindicationType() const { return get<RICindicationType>(5); }
-               RICindicationHeader& select_id_RICindicationHeader() { return set<RICindicationHeader>(6); }
-               RICindicationHeader const* get_id_RICindicationHeader() const { return get<RICindicationHeader>(6); }
-               RICindicationMessage& select_id_RICindicationMessage() { return set<RICindicationMessage>(7); }
-               RICindicationMessage const* get_id_RICindicationMessage() const { return get<RICindicationMessage>(7); }
-               RICcallProcessID& select_id_RICcallProcessID() { return set<RICcallProcessID>(8); }
-               RICcallProcessID const* get_id_RICcallProcessID() const { return get<RICcallProcessID>(8); }
-               bool is_unknown() const { return type == 9; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<RICrequestID>(); break;
-                       case 2: var.destroy<RANfunctionID>(); break;
-                       case 3: var.destroy<RICactionID>(); break;
-                       case 4: var.destroy<RICindicationSN>(); break;
-                       case 5: var.destroy<RICindicationType>(); break;
-                       case 6: var.destroy<RICindicationHeader>(); break;
-                       case 7: var.destroy<RICindicationMessage>(); break;
-                       case 8: var.destroy<RICcallProcessID>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<RICrequestID>(1);
-                       v.template operator()<RANfunctionID>(2);
-                       v.template operator()<RICactionID>(3);
-                       v.template operator()<RICindicationSN>(4);
-                       v.template operator()<RICindicationType>(5);
-                       v.template operator()<RICindicationHeader>(6);
-                       v.template operator()<RICindicationMessage>(7);
-                       v.template operator()<RICcallProcessID>(8);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_RICrequestID()); return true;
-                       case 2: v(select_id_RANfunctionID()); return true;
-                       case 3: v(select_id_RICactionID()); return true;
-                       case 4: v(select_id_RICindicationSN()); return true;
-                       case 5: v(select_id_RICindicationType()); return true;
-                       case 6: v(select_id_RICindicationHeader()); return true;
-                       case 7: v(select_id_RICindicationMessage()); return true;
-                       case 8: v(select_id_RICcallProcessID()); 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<RICrequestID>()); return true;
-                       case 2: v(var.as<RANfunctionID>()); return true;
-                       case 3: v(var.as<RICactionID>()); return true;
-                       case 4: v(var.as<RICindicationSN>()); return true;
-                       case 5: v(var.as<RICindicationType>()); return true;
-                       case 6: v(var.as<RICindicationHeader>()); return true;
-                       case 7: v(var.as<RICindicationMessage>()); return true;
-                       case 8: v(var.as<RICcallProcessID>()); 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(RANfunctionID)];
-                       char dummy2[sizeof(RICactionID)];
-                       char dummy3[sizeof(RICcallProcessID)];
-                       char dummy4[sizeof(RICindicationHeader)];
-                       char dummy5[sizeof(RICindicationMessage)];
-                       char dummy6[sizeof(RICindicationSN)];
-                       char dummy7[sizeof(RICindicationType)];
-                       char dummy8[sizeof(RICrequestID)];
-
-               };
-               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_RICrequestID() { set(mandatory); type=1;}
-               void select_id_RANfunctionID() { set(mandatory); type=2;}
-               void select_id_RICactionID() { set(mandatory); type=3;}
-               void select_id_RICindicationSN() { set(mandatory); type=4;}
-               void select_id_RICindicationType() { set(mandatory); type=5;}
-               void select_id_RICindicationHeader() { set(mandatory); type=6;}
-               void select_id_RICindicationMessage() { set(mandatory); type=7;}
-               void select_id_RICcallProcessID() { 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(mandatory)) { type = 4; return true; }
-                       else if(equal(mandatory)) { 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 { 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(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(mandatory);} 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};
-
-       };
-
-};
-/*
-RICindication ::= SEQUENCE {
-       protocolIEs                                     ProtocolIE-Container    {{RICindication-IEs}},
-       ...
-}
-*/
-
-struct RICindication : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "RICindication";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<RICindication_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<RICindication_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;
-
-};
-/*
-RICserviceQuery-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-RANfunctionsAccepted            CRITICALITY reject      TYPE RANfunctionsID-List                        PRESENCE optional},
-       ...
-}
-*/
-
-struct RICserviceQuery_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_RANfunctionsAccepted() { set(id_RANfunctionsAccepted); 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_RANfunctionsAccepted)) { 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_RANfunctionsAccepted);} 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_RANfunctionsAccepted() { 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;}
-               RANfunctionsID_List& select_id_RANfunctionsAccepted() { return set<RANfunctionsID_List>(1); }
-               RANfunctionsID_List const* get_id_RANfunctionsAccepted() const { return get<RANfunctionsID_List>(1); }
-               bool is_unknown() const { return type == 2; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<RANfunctionsID_List>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<RANfunctionsID_List>(1);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_RANfunctionsAccepted()); 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<RANfunctionsID_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(RANfunctionsID_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_RANfunctionsAccepted() { 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};
-
-       };
-
-};
-/*
-RICserviceQuery ::= SEQUENCE {
-       protocolIEs                                     ProtocolIE-Container    {{RICserviceQuery-IEs}},
-       ...
-}
-*/
-
-struct RICserviceQuery : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "RICserviceQuery";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<RICserviceQuery_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<RICserviceQuery_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;
-
-};
-/*
-RICserviceUpdate-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-RANfunctionsAdded                       CRITICALITY reject      TYPE RANfunctions-List                  PRESENCE optional}|
-       { ID id-RANfunctionsModified            CRITICALITY reject      TYPE RANfunctions-List                  PRESENCE optional}|
-    { ID id-RANfunctionsDeleted                        CRITICALITY reject      TYPE RANfunctionsID-List                PRESENCE optional},
-       ...
-}
-*/
-
-struct RICserviceUpdate_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_RANfunctionsAdded() { set(id_RANfunctionsAdded); type=1;}
-               void select_id_RANfunctionsModified() { set(id_RANfunctionsModified); type=2;}
-               void select_id_RANfunctionsDeleted() { set(id_RANfunctionsDeleted); 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_RANfunctionsAdded)) { type = 1; return true; }
-                       else if(equal(id_RANfunctionsModified)) { type = 2; return true; }
-                       else if(equal(id_RANfunctionsDeleted)) { 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_RANfunctionsAdded);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_RANfunctionsModified);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_RANfunctionsDeleted);} 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_RANfunctionsAdded() { set(reject); type=1;}
-               void select_id_RANfunctionsModified() { set(reject); type=2;}
-               void select_id_RANfunctionsDeleted() { 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;}
-               RANfunctions_List& select_id_RANfunctionsAdded() { return set<RANfunctions_List>(1); }
-               RANfunctions_List const* get_id_RANfunctionsAdded() const { return get<RANfunctions_List>(1); }
-               RANfunctions_List& select_id_RANfunctionsModified() { return set<RANfunctions_List>(2); }
-               RANfunctions_List const* get_id_RANfunctionsModified() const { return get<RANfunctions_List>(2); }
-               RANfunctionsID_List& select_id_RANfunctionsDeleted() { return set<RANfunctionsID_List>(3); }
-               RANfunctionsID_List const* get_id_RANfunctionsDeleted() const { return get<RANfunctionsID_List>(3); }
-               bool is_unknown() const { return type == 4; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<RANfunctions_List>(); break;
-                       case 2: var.destroy<RANfunctions_List>(); break;
-                       case 3: var.destroy<RANfunctionsID_List>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<RANfunctions_List>(1);
-                       v.template operator()<RANfunctions_List>(2);
-                       v.template operator()<RANfunctionsID_List>(3);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_RANfunctionsAdded()); return true;
-                       case 2: v(select_id_RANfunctionsModified()); return true;
-                       case 3: v(select_id_RANfunctionsDeleted()); 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<RANfunctions_List>()); return true;
-                       case 2: v(var.as<RANfunctions_List>()); return true;
-                       case 3: v(var.as<RANfunctionsID_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(RANfunctionsID_List)];
-                       char dummy2[sizeof(RANfunctions_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 == 4; }
-               void clear() {type = 0;}
-               void select_id_RANfunctionsAdded() { set(optional); type=1;}
-               void select_id_RANfunctionsModified() { set(optional); type=2;}
-               void select_id_RANfunctionsDeleted() { 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};
-
-       };
-
-};
-/*
-RICserviceUpdate ::= SEQUENCE {
-       protocolIEs                                     ProtocolIE-Container    {{RICserviceUpdate-IEs}},
-       ...
-}
-*/
-
-struct RICserviceUpdate : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "RICserviceUpdate";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<RICserviceUpdate_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<RICserviceUpdate_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;
-
-};
-/*
-RICserviceUpdateAcknowledge-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-RANfunctionsAccepted            CRITICALITY reject      TYPE RANfunctionsID-List                        PRESENCE optional}|
-       { ID id-RANfunctionsRejected            CRITICALITY reject      TYPE RANfunctionsIDcause-List           PRESENCE optional},
-       ...
-}
-*/
-
-struct RICserviceUpdateAcknowledge_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_RANfunctionsAccepted() { set(id_RANfunctionsAccepted); type=1;}
-               void select_id_RANfunctionsRejected() { set(id_RANfunctionsRejected); 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_RANfunctionsAccepted)) { type = 1; return true; }
-                       else if(equal(id_RANfunctionsRejected)) { 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_RANfunctionsAccepted);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_RANfunctionsRejected);} 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_RANfunctionsAccepted() { set(reject); type=1;}
-               void select_id_RANfunctionsRejected() { 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;}
-               RANfunctionsID_List& select_id_RANfunctionsAccepted() { return set<RANfunctionsID_List>(1); }
-               RANfunctionsID_List const* get_id_RANfunctionsAccepted() const { return get<RANfunctionsID_List>(1); }
-               RANfunctionsIDcause_List& select_id_RANfunctionsRejected() { return set<RANfunctionsIDcause_List>(2); }
-               RANfunctionsIDcause_List const* get_id_RANfunctionsRejected() const { return get<RANfunctionsIDcause_List>(2); }
-               bool is_unknown() const { return type == 3; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<RANfunctionsID_List>(); break;
-                       case 2: var.destroy<RANfunctionsIDcause_List>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<RANfunctionsID_List>(1);
-                       v.template operator()<RANfunctionsIDcause_List>(2);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_RANfunctionsAccepted()); return true;
-                       case 2: v(select_id_RANfunctionsRejected()); 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<RANfunctionsID_List>()); return true;
-                       case 2: v(var.as<RANfunctionsIDcause_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(RANfunctionsID_List)];
-                       char dummy2[sizeof(RANfunctionsIDcause_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 == 3; }
-               void clear() {type = 0;}
-               void select_id_RANfunctionsAccepted() { set(optional); type=1;}
-               void select_id_RANfunctionsRejected() { 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(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};
-
-       };
-
-};
-/*
-RICserviceUpdateAcknowledge ::= SEQUENCE {
-       protocolIEs                                     ProtocolIE-Container    {{RICserviceUpdateAcknowledge-IEs}},
-       ...
-}
-*/
-
-struct RICserviceUpdateAcknowledge : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "RICserviceUpdateAcknowledge";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<RICserviceUpdateAcknowledge_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<RICserviceUpdateAcknowledge_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;
-
-};
-/*
-RICserviceUpdateFailure-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-RANfunctionsRejected            CRITICALITY reject      TYPE RANfunctionsIDcause-List           PRESENCE optional}|
-       { ID id-TimeToWait                                      CRITICALITY ignore      TYPE TimeToWait                                         PRESENCE optional}|
-    { ID id-CriticalityDiagnostics             CRITICALITY ignore      TYPE CriticalityDiagnostics                     PRESENCE optional},
-       ...
-}
-*/
-
-struct RICserviceUpdateFailure_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_RANfunctionsRejected() { set(id_RANfunctionsRejected); 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_RANfunctionsRejected)) { 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_RANfunctionsRejected);} 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_RANfunctionsRejected() { set(reject); 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(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;}
-               RANfunctionsIDcause_List& select_id_RANfunctionsRejected() { return set<RANfunctionsIDcause_List>(1); }
-               RANfunctionsIDcause_List const* get_id_RANfunctionsRejected() const { return get<RANfunctionsIDcause_List>(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<RANfunctionsIDcause_List>(); 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()<RANfunctionsIDcause_List>(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_RANfunctionsRejected()); 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<RANfunctionsIDcause_List>()); 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(CriticalityDiagnostics)];
-                       char dummy2[sizeof(RANfunctionsIDcause_List)];
-                       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_RANfunctionsRejected() { set(optional); 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(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};
-
-       };
-
-};
-/*
-RICserviceUpdateFailure ::= SEQUENCE {
-       protocolIEs                     ProtocolIE-Container    {{RICserviceUpdateFailure-IEs}},
-       ...
-}
-*/
-
-struct RICserviceUpdateFailure : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "RICserviceUpdateFailure";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<RICserviceUpdateFailure_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<RICserviceUpdateFailure_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;
-
-};
-/*
-RICsubscription ::= SEQUENCE {
-       ricEventTriggerDefinition       RICeventTriggerDefinition,
-       ricAction-ToBeSetup-List        RICactions-ToBeSetup-List,
-       ...
-}
-*/
-
-struct RICsubscription : asn::sequence<2, 0, true, 0>
-{
-       static constexpr const char* name() {return "RICsubscription";}
-       using parent_t = asn::sequence<2, 0, true, 0>;
-       struct ricEventTriggerDefinition_t : RICeventTriggerDefinition
-       {
-               static constexpr const char* name() {return "ricEventTriggerDefinition_t";}
-               using parent_t = RICeventTriggerDefinition;
-
-       };
-       ricEventTriggerDefinition_t& ref_ricEventTriggerDefinition() {return ricEventTriggerDefinition;}
-       ricEventTriggerDefinition_t const& ref_ricEventTriggerDefinition() const {return ricEventTriggerDefinition;}
-       struct ricAction_ToBeSetup_List_t : RICactions_ToBeSetup_List
-       {
-               static constexpr const char* name() {return "ricAction_ToBeSetup_List_t";}
-               using parent_t = RICactions_ToBeSetup_List;
-
-       };
-       ricAction_ToBeSetup_List_t& ref_ricAction_ToBeSetup_List() {return ricAction_ToBeSetup_List;}
-       ricAction_ToBeSetup_List_t const& ref_ricAction_ToBeSetup_List() const {return ricAction_ToBeSetup_List;}
-       template<typename V> void decode(V& v)
-       {
-               v(ricEventTriggerDefinition);
-               v(ricAction_ToBeSetup_List);
-
-       };
-       template<typename V> void encode(V& v) const
-       {
-               v(ricEventTriggerDefinition);
-               v(ricAction_ToBeSetup_List);
-
-       };
-       void clear()
-       {
-               ricEventTriggerDefinition.clear();
-               ricAction_ToBeSetup_List.clear();
-
-       };
-       private:
-       ricEventTriggerDefinition_t     ricEventTriggerDefinition;
-       ricAction_ToBeSetup_List_t      ricAction_ToBeSetup_List;
-
-};
-/*
-RICsubscriptionDeleteFailure-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-RICrequestID                            CRITICALITY reject      TYPE RICrequestID                                       PRESENCE mandatory}|
-       { ID id-RANfunctionID                           CRITICALITY reject      TYPE RANfunctionID                                      PRESENCE mandatory}|
-    { ID id-RICcause                                   CRITICALITY reject      TYPE RICcause                                           PRESENCE mandatory}|
-    { ID id-CriticalityDiagnostics             CRITICALITY ignore      TYPE CriticalityDiagnostics                     PRESENCE optional},
-    ...
-}
-*/
-
-struct RICsubscriptionDeleteFailure_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_RICrequestID() { set(id_RICrequestID); type=1;}
-               void select_id_RANfunctionID() { set(id_RANfunctionID); type=2;}
-               void select_id_RICcause() { set(id_RICcause); 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_RICrequestID)) { type = 1; return true; }
-                       else if(equal(id_RANfunctionID)) { type = 2; return true; }
-                       else if(equal(id_RICcause)) { 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_RICrequestID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_RANfunctionID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_RICcause);} 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_RICrequestID() { set(reject); type=1;}
-               void select_id_RANfunctionID() { set(reject); type=2;}
-               void select_id_RICcause() { set(reject); 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(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;}
-               RICrequestID& select_id_RICrequestID() { return set<RICrequestID>(1); }
-               RICrequestID const* get_id_RICrequestID() const { return get<RICrequestID>(1); }
-               RANfunctionID& select_id_RANfunctionID() { return set<RANfunctionID>(2); }
-               RANfunctionID const* get_id_RANfunctionID() const { return get<RANfunctionID>(2); }
-               RICcause& select_id_RICcause() { return set<RICcause>(3); }
-               RICcause const* get_id_RICcause() const { return get<RICcause>(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<RICrequestID>(); break;
-                       case 2: var.destroy<RANfunctionID>(); break;
-                       case 3: var.destroy<RICcause>(); break;
-                       case 4: var.destroy<CriticalityDiagnostics>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<RICrequestID>(1);
-                       v.template operator()<RANfunctionID>(2);
-                       v.template operator()<RICcause>(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_RICrequestID()); return true;
-                       case 2: v(select_id_RANfunctionID()); return true;
-                       case 3: v(select_id_RICcause()); 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<RICrequestID>()); return true;
-                       case 2: v(var.as<RANfunctionID>()); return true;
-                       case 3: v(var.as<RICcause>()); 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(CriticalityDiagnostics)];
-                       char dummy2[sizeof(RANfunctionID)];
-                       char dummy3[sizeof(RICcause)];
-                       char dummy4[sizeof(RICrequestID)];
-
-               };
-               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_RICrequestID() { set(mandatory); type=1;}
-               void select_id_RANfunctionID() { set(mandatory); type=2;}
-               void select_id_RICcause() { 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(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};
-
-       };
-
-};
-/*
-RICsubscriptionDeleteFailure ::= SEQUENCE {
-       protocolIEs                                     ProtocolIE-Container    {{RICsubscriptionDeleteFailure-IEs}},
-       ...
-}
-*/
-
-struct RICsubscriptionDeleteFailure : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "RICsubscriptionDeleteFailure";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<RICsubscriptionDeleteFailure_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<RICsubscriptionDeleteFailure_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;
-
-};
-/*
-RICsubscriptionDeleteRequest-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-RICrequestID                            CRITICALITY reject      TYPE RICrequestID                                       PRESENCE mandatory}|
-       { ID id-RANfunctionID                           CRITICALITY reject      TYPE RANfunctionID                                      PRESENCE mandatory},
-    ...
-}
-*/
-
-struct RICsubscriptionDeleteRequest_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_RICrequestID() { set(id_RICrequestID); type=1;}
-               void select_id_RANfunctionID() { set(id_RANfunctionID); 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_RICrequestID)) { type = 1; return true; }
-                       else if(equal(id_RANfunctionID)) { 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_RICrequestID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_RANfunctionID);} 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_RICrequestID() { set(reject); type=1;}
-               void select_id_RANfunctionID() { 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;}
-               RICrequestID& select_id_RICrequestID() { return set<RICrequestID>(1); }
-               RICrequestID const* get_id_RICrequestID() const { return get<RICrequestID>(1); }
-               RANfunctionID& select_id_RANfunctionID() { return set<RANfunctionID>(2); }
-               RANfunctionID const* get_id_RANfunctionID() const { return get<RANfunctionID>(2); }
-               bool is_unknown() const { return type == 3; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<RICrequestID>(); break;
-                       case 2: var.destroy<RANfunctionID>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<RICrequestID>(1);
-                       v.template operator()<RANfunctionID>(2);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_RICrequestID()); return true;
-                       case 2: v(select_id_RANfunctionID()); 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<RICrequestID>()); return true;
-                       case 2: v(var.as<RANfunctionID>()); 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(RANfunctionID)];
-                       char dummy2[sizeof(RICrequestID)];
-
-               };
-               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_RICrequestID() { set(mandatory); type=1;}
-               void select_id_RANfunctionID() { 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};
-
-       };
-
-};
-/*
-RICsubscriptionDeleteRequest ::= SEQUENCE {
-       protocolIEs                                     ProtocolIE-Container    {{RICsubscriptionDeleteRequest-IEs}},
-       ...
-}
-*/
-
-struct RICsubscriptionDeleteRequest : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "RICsubscriptionDeleteRequest";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<RICsubscriptionDeleteRequest_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<RICsubscriptionDeleteRequest_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;
-
-};
-/*
-RICsubscriptionDeleteResponse-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-RICrequestID                            CRITICALITY reject      TYPE RICrequestID                                       PRESENCE mandatory}|
-       { ID id-RANfunctionID                           CRITICALITY reject      TYPE RANfunctionID                                      PRESENCE mandatory},
-    ...
-}
-*/
-
-struct RICsubscriptionDeleteResponse_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_RICrequestID() { set(id_RICrequestID); type=1;}
-               void select_id_RANfunctionID() { set(id_RANfunctionID); 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_RICrequestID)) { type = 1; return true; }
-                       else if(equal(id_RANfunctionID)) { 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_RICrequestID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_RANfunctionID);} 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_RICrequestID() { set(reject); type=1;}
-               void select_id_RANfunctionID() { 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;}
-               RICrequestID& select_id_RICrequestID() { return set<RICrequestID>(1); }
-               RICrequestID const* get_id_RICrequestID() const { return get<RICrequestID>(1); }
-               RANfunctionID& select_id_RANfunctionID() { return set<RANfunctionID>(2); }
-               RANfunctionID const* get_id_RANfunctionID() const { return get<RANfunctionID>(2); }
-               bool is_unknown() const { return type == 3; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<RICrequestID>(); break;
-                       case 2: var.destroy<RANfunctionID>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<RICrequestID>(1);
-                       v.template operator()<RANfunctionID>(2);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_RICrequestID()); return true;
-                       case 2: v(select_id_RANfunctionID()); 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<RICrequestID>()); return true;
-                       case 2: v(var.as<RANfunctionID>()); 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(RANfunctionID)];
-                       char dummy2[sizeof(RICrequestID)];
-
-               };
-               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_RICrequestID() { set(mandatory); type=1;}
-               void select_id_RANfunctionID() { 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};
-
-       };
-
-};
-/*
-RICsubscriptionDeleteResponse ::= SEQUENCE {
-       protocolIEs                                     ProtocolIE-Container    {{RICsubscriptionDeleteResponse-IEs}},
-       ...
-}
-*/
-
-struct RICsubscriptionDeleteResponse : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "RICsubscriptionDeleteResponse";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<RICsubscriptionDeleteResponse_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<RICsubscriptionDeleteResponse_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;
-
-};
-/*
-RICsubscriptionFailure-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-RICrequestID                            CRITICALITY reject      TYPE RICrequestID                                       PRESENCE mandatory}|
-       { ID id-RANfunctionID                           CRITICALITY reject      TYPE RANfunctionID                                      PRESENCE mandatory}|
-       { ID id-RICactions-NotAdmitted          CRITICALITY reject      TYPE RICaction-NotAdmitted-List         PRESENCE mandatory}|
-    { ID id-CriticalityDiagnostics             CRITICALITY ignore      TYPE CriticalityDiagnostics                     PRESENCE optional},
-    ...
-}
-*/
-
-struct RICsubscriptionFailure_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_RICrequestID() { set(id_RICrequestID); type=1;}
-               void select_id_RANfunctionID() { set(id_RANfunctionID); type=2;}
-               void select_id_RICactions_NotAdmitted() { set(id_RICactions_NotAdmitted); 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_RICrequestID)) { type = 1; return true; }
-                       else if(equal(id_RANfunctionID)) { type = 2; return true; }
-                       else if(equal(id_RICactions_NotAdmitted)) { 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_RICrequestID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_RANfunctionID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_RICactions_NotAdmitted);} 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_RICrequestID() { set(reject); type=1;}
-               void select_id_RANfunctionID() { set(reject); type=2;}
-               void select_id_RICactions_NotAdmitted() { set(reject); 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(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;}
-               RICrequestID& select_id_RICrequestID() { return set<RICrequestID>(1); }
-               RICrequestID const* get_id_RICrequestID() const { return get<RICrequestID>(1); }
-               RANfunctionID& select_id_RANfunctionID() { return set<RANfunctionID>(2); }
-               RANfunctionID const* get_id_RANfunctionID() const { return get<RANfunctionID>(2); }
-               RICaction_NotAdmitted_List& select_id_RICactions_NotAdmitted() { return set<RICaction_NotAdmitted_List>(3); }
-               RICaction_NotAdmitted_List const* get_id_RICactions_NotAdmitted() const { return get<RICaction_NotAdmitted_List>(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<RICrequestID>(); break;
-                       case 2: var.destroy<RANfunctionID>(); break;
-                       case 3: var.destroy<RICaction_NotAdmitted_List>(); break;
-                       case 4: var.destroy<CriticalityDiagnostics>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<RICrequestID>(1);
-                       v.template operator()<RANfunctionID>(2);
-                       v.template operator()<RICaction_NotAdmitted_List>(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_RICrequestID()); return true;
-                       case 2: v(select_id_RANfunctionID()); return true;
-                       case 3: v(select_id_RICactions_NotAdmitted()); 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<RICrequestID>()); return true;
-                       case 2: v(var.as<RANfunctionID>()); return true;
-                       case 3: v(var.as<RICaction_NotAdmitted_List>()); 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(CriticalityDiagnostics)];
-                       char dummy2[sizeof(RANfunctionID)];
-                       char dummy3[sizeof(RICaction_NotAdmitted_List)];
-                       char dummy4[sizeof(RICrequestID)];
-
-               };
-               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_RICrequestID() { set(mandatory); type=1;}
-               void select_id_RANfunctionID() { set(mandatory); type=2;}
-               void select_id_RICactions_NotAdmitted() { 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(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};
-
-       };
-
-};
-/*
-RICsubscriptionFailure ::= SEQUENCE {
-       protocolIEs                                     ProtocolIE-Container    {{RICsubscriptionFailure-IEs}},
-       ...
-}
-*/
-
-struct RICsubscriptionFailure : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "RICsubscriptionFailure";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<RICsubscriptionFailure_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<RICsubscriptionFailure_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;
-
-};
-/*
-RICsubscriptionRequest-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-RICrequestID                            CRITICALITY reject      TYPE RICrequestID                                       PRESENCE mandatory}|
-       { ID id-RANfunctionID                           CRITICALITY reject      TYPE RANfunctionID                                      PRESENCE mandatory}|
-       { ID id-RICsubscription                         CRITICALITY reject      TYPE RICsubscription                            PRESENCE mandatory},
-       ...
-}
-*/
-
-struct RICsubscriptionRequest_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_RICrequestID() { set(id_RICrequestID); type=1;}
-               void select_id_RANfunctionID() { set(id_RANfunctionID); type=2;}
-               void select_id_RICsubscription() { set(id_RICsubscription); 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_RICrequestID)) { type = 1; return true; }
-                       else if(equal(id_RANfunctionID)) { type = 2; return true; }
-                       else if(equal(id_RICsubscription)) { 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_RICrequestID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_RANfunctionID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_RICsubscription);} 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_RICrequestID() { set(reject); type=1;}
-               void select_id_RANfunctionID() { set(reject); type=2;}
-               void select_id_RICsubscription() { 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;}
-               RICrequestID& select_id_RICrequestID() { return set<RICrequestID>(1); }
-               RICrequestID const* get_id_RICrequestID() const { return get<RICrequestID>(1); }
-               RANfunctionID& select_id_RANfunctionID() { return set<RANfunctionID>(2); }
-               RANfunctionID const* get_id_RANfunctionID() const { return get<RANfunctionID>(2); }
-               RICsubscription& select_id_RICsubscription() { return set<RICsubscription>(3); }
-               RICsubscription const* get_id_RICsubscription() const { return get<RICsubscription>(3); }
-               bool is_unknown() const { return type == 4; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<RICrequestID>(); break;
-                       case 2: var.destroy<RANfunctionID>(); break;
-                       case 3: var.destroy<RICsubscription>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<RICrequestID>(1);
-                       v.template operator()<RANfunctionID>(2);
-                       v.template operator()<RICsubscription>(3);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_RICrequestID()); return true;
-                       case 2: v(select_id_RANfunctionID()); return true;
-                       case 3: v(select_id_RICsubscription()); 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<RICrequestID>()); return true;
-                       case 2: v(var.as<RANfunctionID>()); return true;
-                       case 3: v(var.as<RICsubscription>()); 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(RANfunctionID)];
-                       char dummy2[sizeof(RICrequestID)];
-                       char dummy3[sizeof(RICsubscription)];
-
-               };
-               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_RICrequestID() { set(mandatory); type=1;}
-               void select_id_RANfunctionID() { set(mandatory); type=2;}
-               void select_id_RICsubscription() { 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};
-
-       };
-
-};
-/*
-RICsubscriptionRequest ::= SEQUENCE {
-       protocolIEs                                     ProtocolIE-Container    {{RICsubscriptionRequest-IEs}},
-       ...
-}
-*/
-
-struct RICsubscriptionRequest : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "RICsubscriptionRequest";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<RICsubscriptionRequest_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<RICsubscriptionRequest_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;
-
-};
-/*
-RICsubscriptionResponse-IEs X2AP-PROTOCOL-IES ::= {
-       { ID id-RICrequestID                            CRITICALITY reject              TYPE RICrequestID                               PRESENCE mandatory } |
-       { ID id-RANfunctionID                           CRITICALITY reject              TYPE RANfunctionID                              PRESENCE mandatory } |
-       { ID id-RICactions-Admitted                     CRITICALITY reject              TYPE RICaction-Admitted-List    PRESENCE mandatory } |
-       { ID id-RICactions-NotAdmitted          CRITICALITY reject              TYPE RICaction-NotAdmitted-List PRESENCE optional },
-    ...
-}
-*/
-
-struct RICsubscriptionResponse_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_RICrequestID() { set(id_RICrequestID); type=1;}
-               void select_id_RANfunctionID() { set(id_RANfunctionID); type=2;}
-               void select_id_RICactions_Admitted() { set(id_RICactions_Admitted); type=3;}
-               void select_id_RICactions_NotAdmitted() { set(id_RICactions_NotAdmitted); 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_RICrequestID)) { type = 1; return true; }
-                       else if(equal(id_RANfunctionID)) { type = 2; return true; }
-                       else if(equal(id_RICactions_Admitted)) { type = 3; return true; }
-                       else if(equal(id_RICactions_NotAdmitted)) { 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_RICrequestID);} return false;
-                       case 2: type = 2; if(v(ref_nested())) { return equal(id_RANfunctionID);} return false;
-                       case 3: type = 3; if(v(ref_nested())) { return equal(id_RICactions_Admitted);} return false;
-                       case 4: type = 4; if(v(ref_nested())) { return equal(id_RICactions_NotAdmitted);} 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_RICrequestID() { set(reject); type=1;}
-               void select_id_RANfunctionID() { set(reject); type=2;}
-               void select_id_RICactions_Admitted() { set(reject); type=3;}
-               void select_id_RICactions_NotAdmitted() { 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;}
-               RICrequestID& select_id_RICrequestID() { return set<RICrequestID>(1); }
-               RICrequestID const* get_id_RICrequestID() const { return get<RICrequestID>(1); }
-               RANfunctionID& select_id_RANfunctionID() { return set<RANfunctionID>(2); }
-               RANfunctionID const* get_id_RANfunctionID() const { return get<RANfunctionID>(2); }
-               RICaction_Admitted_List& select_id_RICactions_Admitted() { return set<RICaction_Admitted_List>(3); }
-               RICaction_Admitted_List const* get_id_RICactions_Admitted() const { return get<RICaction_Admitted_List>(3); }
-               RICaction_NotAdmitted_List& select_id_RICactions_NotAdmitted() { return set<RICaction_NotAdmitted_List>(4); }
-               RICaction_NotAdmitted_List const* get_id_RICactions_NotAdmitted() const { return get<RICaction_NotAdmitted_List>(4); }
-               bool is_unknown() const { return type == 5; }
-               void clear()
-               {
-                       switch(type)
-                       {
-                       case 1: var.destroy<RICrequestID>(); break;
-                       case 2: var.destroy<RANfunctionID>(); break;
-                       case 3: var.destroy<RICaction_Admitted_List>(); break;
-                       case 4: var.destroy<RICaction_NotAdmitted_List>(); break;
-                       }
-                       type = 0; ref_nested().clear();
-               }
-               template<typename V> static inline void enumerate(V& v)
-               {
-                       v.template operator()<RICrequestID>(1);
-                       v.template operator()<RANfunctionID>(2);
-                       v.template operator()<RICaction_Admitted_List>(3);
-                       v.template operator()<RICaction_NotAdmitted_List>(4);
-
-               }
-               protected:
-               template<typename V> bool decode(size_t index, V& v)
-               {
-                       clear();
-                       switch(index)
-                       {
-                       case 1: v(select_id_RICrequestID()); return true;
-                       case 2: v(select_id_RANfunctionID()); return true;
-                       case 3: v(select_id_RICactions_Admitted()); return true;
-                       case 4: v(select_id_RICactions_NotAdmitted()); 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<RICrequestID>()); return true;
-                       case 2: v(var.as<RANfunctionID>()); return true;
-                       case 3: v(var.as<RICaction_Admitted_List>()); return true;
-                       case 4: v(var.as<RICaction_NotAdmitted_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(RANfunctionID)];
-                       char dummy2[sizeof(RICaction_Admitted_List)];
-                       char dummy3[sizeof(RICaction_NotAdmitted_List)];
-                       char dummy4[sizeof(RICrequestID)];
-
-               };
-               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_RICrequestID() { set(mandatory); type=1;}
-               void select_id_RANfunctionID() { set(mandatory); type=2;}
-               void select_id_RICactions_Admitted() { set(mandatory); type=3;}
-               void select_id_RICactions_NotAdmitted() { 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};
-
-       };
-
-};
-/*
-RICsubscriptionResponse ::= SEQUENCE {
-       protocolIEs                                     ProtocolIE-Container{{RICsubscriptionResponse-IEs}},
-       ...
-}
-*/
-
-struct RICsubscriptionResponse : asn::sequence<1, 0, true, 0>
-{
-       static constexpr const char* name() {return "RICsubscriptionResponse";}
-       using parent_t = asn::sequence<1, 0, true, 0>;
-       struct protocolIEs_t : ProtocolIE_Container<RICsubscriptionResponse_IEs>
-       {
-               static constexpr const char* name() {return "protocolIEs_t";}
-               using parent_t = ProtocolIE_Container<RICsubscriptionResponse_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;
-
-};