diff --git a/src/ranap/RANAP_SDU-Parameters.c b/src/ranap/RANAP_SDU-Parameters.c
index 1808c88..aad53f8 100644
--- a/src/ranap/RANAP_SDU-Parameters.c
+++ b/src/ranap/RANAP_SDU-Parameters.c
@@ -11,107 +11,11 @@
 	{ APC_CONSTRAINED,	 3,  3,  1l,  7l }	/* (SIZE(1..7)) */,
 	0, 0	/* No PER value map */
 };
-static asn_TYPE_member_t asn_MBR_MemberI_2[] = {
-	{ ATF_POINTER, 1, offsetof(struct MemberI, sDU_ErrorRatio),
-		(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_RANAP_SDU_ErrorRatio,
-		0,	/* Defer constraints checking to the member type */
-		0,	/* No PER visible constraints */
-		0,
-		"sDU-ErrorRatio"
-		},
-	{ ATF_NOFLAGS, 0, offsetof(struct MemberI, residualBitErrorRatio),
-		(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_RANAP_ResidualBitErrorRatio,
-		0,	/* Defer constraints checking to the member type */
-		0,	/* No PER visible constraints */
-		0,
-		"residualBitErrorRatio"
-		},
-	{ ATF_NOFLAGS, 0, offsetof(struct MemberI, deliveryOfErroneousSDU),
-		(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_RANAP_DeliveryOfErroneousSDU,
-		0,	/* Defer constraints checking to the member type */
-		0,	/* No PER visible constraints */
-		0,
-		"deliveryOfErroneousSDU"
-		},
-	{ ATF_POINTER, 2, offsetof(struct MemberI, sDU_FormatInformationParameters),
-		(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_RANAP_SDU_FormatInformationParameters,
-		0,	/* Defer constraints checking to the member type */
-		0,	/* No PER visible constraints */
-		0,
-		"sDU-FormatInformationParameters"
-		},
-	{ ATF_POINTER, 1, offsetof(struct MemberI, iE_Extensions),
-		(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
-		-1,	/* IMPLICIT tag at current level */
-		&asn_DEF_RANAP_IE_Extensions,
-		0,	/* Defer constraints checking to the member type */
-		0,	/* No PER visible constraints */
-		0,
-		"iE-Extensions"
-		},
-};
-static const int asn_MAP_MemberI_oms_2[] = { 0, 3, 4 };
-static const ber_tlv_tag_t asn_DEF_MemberI_tags_2[] = {
-	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
-};
-static const asn_TYPE_tag2member_t asn_MAP_MemberI_tag2el_2[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sDU-ErrorRatio */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* residualBitErrorRatio */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* deliveryOfErroneousSDU */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* sDU-FormatInformationParameters */
-    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 } /* iE-Extensions */
-};
-static asn_SEQUENCE_specifics_t asn_SPC_MemberI_specs_2 = {
-	sizeof(struct MemberI),
-	offsetof(struct MemberI, _asn_ctx),
-	asn_MAP_MemberI_tag2el_2,
-	5,	/* Count of tags in the map */
-	asn_MAP_MemberI_oms_2,	/* Optional members */
-	3, 0,	/* Root/Additions */
-	4,	/* Start extensions */
-	6	/* Stop extensions */
-};
-static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_MemberI_2 = {
-	"SEQUENCE",
-	"SEQUENCE",
-	SEQUENCE_free,
-	SEQUENCE_print,
-	SEQUENCE_constraint,
-	SEQUENCE_decode_ber,
-	SEQUENCE_encode_der,
-	SEQUENCE_decode_xer,
-	SEQUENCE_encode_xer,
-	SEQUENCE_decode_uper,
-	SEQUENCE_encode_uper,
-	SEQUENCE_decode_aper,
-	SEQUENCE_encode_aper,
-	0,	/* Use generic outmost tag fetcher */
-	asn_DEF_MemberI_tags_2,
-	sizeof(asn_DEF_MemberI_tags_2)
-		/sizeof(asn_DEF_MemberI_tags_2[0]), /* 1 */
-	asn_DEF_MemberI_tags_2,	/* Same as above */
-	sizeof(asn_DEF_MemberI_tags_2)
-		/sizeof(asn_DEF_MemberI_tags_2[0]), /* 1 */
-	0,	/* No PER visible constraints */
-	asn_MBR_MemberI_2,
-	5,	/* Elements count */
-	&asn_SPC_MemberI_specs_2	/* Additional specs */
-};
-
 static asn_TYPE_member_t asn_MBR_RANAP_SDU_Parameters_1[] = {
 	{ ATF_POINTER, 0, 0,
-		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		-1 /* Ambiguous tag (CHOICE?) */,
 		0,
-		&asn_DEF_MemberI_2,
+		&asn_DEF_RANAP_SDU_ParameterItem,
 		0,	/* Defer constraints checking to the member type */
 		0,	/* No PER visible constraints */
 		0,
