asn1_* renamed into asn_*


git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@439 59561ff5-6e30-0410-9f3c-9617f08c8826
diff --git a/tests/19-param-OK.asn1.-P b/tests/19-param-OK.asn1.-P
index 5089d3a..8c609e9 100644
--- a/tests/19-param-OK.asn1.-P
+++ b/tests/19-param-OK.asn1.-P
@@ -9,7 +9,7 @@
 
 /*** <<< DEPS [Certificate] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_Certificate;
+extern asn_TYPE_descriptor_t asn_DEF_Certificate;
 
 /*** <<< TYPE-DECLS [Certificate] >>> ***/
 
@@ -21,19 +21,19 @@
 		Name_t	 issuer;
 		
 		/* Context for parsing across buffer boundaries */
-		ber_dec_ctx_t _ber_dec_ctx;
+		asn_struct_ctx_t _asn_ctx;
 	} toBeSigned;
 	OBJECT_IDENTIFIER_t	 algorithm;
 	BIT_STRING_t	 signature;
 	
 	/* Context for parsing across buffer boundaries */
-	ber_dec_ctx_t _ber_dec_ctx;
+	asn_struct_ctx_t _asn_ctx;
 } Certificate_t;
 
 /*** <<< CODE [Certificate] >>> ***/
 
 static int
-memb_signature_1_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+memb_signature_1_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	const BIT_STRING_t *st = sptr;
 	size_t size;
@@ -66,47 +66,47 @@
 
 /*** <<< STAT-DEFS [Certificate] >>> ***/
 
-static asn1_TYPE_member_t asn1_MBR_toBeSigned[] = {
+static asn_TYPE_member_t asn_MBR_toBeSigned[] = {
 	{ ATF_NOFLAGS, 0, offsetof(struct toBeSigned, version),
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_INTEGER,
+		.type = (void *)&asn_DEF_INTEGER,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "version"
 		},
 	{ ATF_NOFLAGS, 0, offsetof(struct toBeSigned, signature),
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (6 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_OBJECT_IDENTIFIER,
+		.type = (void *)&asn_DEF_OBJECT_IDENTIFIER,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "signature"
 		},
 	{ ATF_NOFLAGS, 0, offsetof(struct toBeSigned, issuer),
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_Name,
+		.type = (void *)&asn_DEF_Name,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "issuer"
 		},
 };
-static ber_tlv_tag_t asn1_DEF_toBeSigned_tags[] = {
+static ber_tlv_tag_t asn_DEF_toBeSigned_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn1_TYPE_tag2member_t asn1_DEF_toBeSigned_tag2el[] = {
+static asn_TYPE_tag2member_t asn_DEF_toBeSigned_tag2el[] = {
     { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* version at 21 */
     { (ASN_TAG_CLASS_UNIVERSAL | (6 << 2)), 1, 0, 0 }, /* signature at 22 */
     { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, 0, 0 }, /* issuer at 24 */
 };
-static asn1_SEQUENCE_specifics_t asn1_DEF_toBeSigned_specs = {
+static asn_SEQUENCE_specifics_t asn_DEF_toBeSigned_specs = {
 	sizeof(struct toBeSigned),
-	offsetof(struct toBeSigned, _ber_dec_ctx),
-	asn1_DEF_toBeSigned_tag2el,
+	offsetof(struct toBeSigned, _asn_ctx),
+	asn_DEF_toBeSigned_tag2el,
 	3,	/* Count of tags in the map */
 	-1,	/* Start extensions */
 	-1	/* Stop extensions */
 };
 static /* Use -fall-defs-global to expose */
-asn1_TYPE_descriptor_t asn1_DEF_toBeSigned = {
+asn_TYPE_descriptor_t asn_DEF_toBeSigned = {
 	"toBeSigned",
 	SEQUENCE_free,
 	SEQUENCE_print,
@@ -116,57 +116,57 @@
 	0,				/* Not implemented yet */
 	SEQUENCE_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_toBeSigned_tags,
-	sizeof(asn1_DEF_toBeSigned_tags)
-		/sizeof(asn1_DEF_toBeSigned_tags[0]), /* 1 */
-	asn1_DEF_toBeSigned_tags,	/* Same as above */
-	sizeof(asn1_DEF_toBeSigned_tags)
-		/sizeof(asn1_DEF_toBeSigned_tags[0]), /* 1 */
-	asn1_MBR_toBeSigned,
+	asn_DEF_toBeSigned_tags,
+	sizeof(asn_DEF_toBeSigned_tags)
+		/sizeof(asn_DEF_toBeSigned_tags[0]), /* 1 */
+	asn_DEF_toBeSigned_tags,	/* Same as above */
+	sizeof(asn_DEF_toBeSigned_tags)
+		/sizeof(asn_DEF_toBeSigned_tags[0]), /* 1 */
+	asn_MBR_toBeSigned,
 	3,	/* Elements count */
-	&asn1_DEF_toBeSigned_specs	/* Additional specs */
+	&asn_DEF_toBeSigned_specs	/* Additional specs */
 };
 
-static asn1_TYPE_member_t asn1_MBR_Certificate[] = {
+static asn_TYPE_member_t asn_MBR_Certificate[] = {
 	{ ATF_NOFLAGS, 0, offsetof(struct Certificate, toBeSigned),
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_toBeSigned,
+		.type = (void *)&asn_DEF_toBeSigned,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "toBeSigned"
 		},
 	{ ATF_NOFLAGS, 0, offsetof(struct Certificate, algorithm),
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (6 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_OBJECT_IDENTIFIER,
+		.type = (void *)&asn_DEF_OBJECT_IDENTIFIER,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "algorithm"
 		},
 	{ ATF_NOFLAGS, 0, offsetof(struct Certificate, signature),
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_BIT_STRING,
+		.type = (void *)&asn_DEF_BIT_STRING,
 		.memb_constraints = memb_signature_1_constraint,
 		.name = "signature"
 		},
 };
-static ber_tlv_tag_t asn1_DEF_Certificate_tags[] = {
+static ber_tlv_tag_t asn_DEF_Certificate_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn1_TYPE_tag2member_t asn1_DEF_Certificate_tag2el[] = {
+static asn_TYPE_tag2member_t asn_DEF_Certificate_tag2el[] = {
     { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 2, 0, 0 }, /* signature at 17 */
     { (ASN_TAG_CLASS_UNIVERSAL | (6 << 2)), 1, 0, 0 }, /* algorithm at 16 */
     { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 }, /* toBeSigned at 21 */
 };
-static asn1_SEQUENCE_specifics_t asn1_DEF_Certificate_specs = {
+static asn_SEQUENCE_specifics_t asn_DEF_Certificate_specs = {
 	sizeof(struct Certificate),
-	offsetof(struct Certificate, _ber_dec_ctx),
-	asn1_DEF_Certificate_tag2el,
+	offsetof(struct Certificate, _asn_ctx),
+	asn_DEF_Certificate_tag2el,
 	3,	/* Count of tags in the map */
 	-1,	/* Start extensions */
 	-1	/* Stop extensions */
 };
-asn1_TYPE_descriptor_t asn1_DEF_Certificate = {
+asn_TYPE_descriptor_t asn_DEF_Certificate = {
 	"Certificate",
 	SEQUENCE_free,
 	SEQUENCE_print,
@@ -176,15 +176,15 @@
 	0,				/* Not implemented yet */
 	SEQUENCE_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_Certificate_tags,
-	sizeof(asn1_DEF_Certificate_tags)
-		/sizeof(asn1_DEF_Certificate_tags[0]), /* 1 */
-	asn1_DEF_Certificate_tags,	/* Same as above */
-	sizeof(asn1_DEF_Certificate_tags)
-		/sizeof(asn1_DEF_Certificate_tags[0]), /* 1 */
-	asn1_MBR_Certificate,
+	asn_DEF_Certificate_tags,
+	sizeof(asn_DEF_Certificate_tags)
+		/sizeof(asn_DEF_Certificate_tags[0]), /* 1 */
+	asn_DEF_Certificate_tags,	/* Same as above */
+	sizeof(asn_DEF_Certificate_tags)
+		/sizeof(asn_DEF_Certificate_tags[0]), /* 1 */
+	asn_MBR_Certificate,
 	3,	/* Elements count */
-	&asn1_DEF_Certificate_specs	/* Additional specs */
+	&asn_DEF_Certificate_specs	/* Additional specs */
 };
 
 
@@ -196,7 +196,7 @@
 
 /*** <<< DEPS [Name] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_Name;
+extern asn_TYPE_descriptor_t asn_DEF_Name;
 
 /*** <<< TYPE-DECLS [Name] >>> ***/
 
@@ -205,29 +205,29 @@
 	A_SEQUENCE_OF(RelativeDistinguishedName_t) list;
 	
 	/* Context for parsing across buffer boundaries */
-	ber_dec_ctx_t _ber_dec_ctx;
+	asn_struct_ctx_t _asn_ctx;
 } Name_t;
 
 /*** <<< STAT-DEFS [Name] >>> ***/
 
-static asn1_TYPE_member_t asn1_MBR_Name[] = {
+static asn_TYPE_member_t asn_MBR_Name[] = {
 	{ ATF_NOFLAGS, 0, 0,
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (17 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_RelativeDistinguishedName,
+		.type = (void *)&asn_DEF_RelativeDistinguishedName,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = ""
 		},
 };
-static ber_tlv_tag_t asn1_DEF_Name_tags[] = {
+static ber_tlv_tag_t asn_DEF_Name_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn1_SET_OF_specifics_t asn1_DEF_Name_specs = {
+static asn_SET_OF_specifics_t asn_DEF_Name_specs = {
 	sizeof(struct Name),
-	offsetof(struct Name, _ber_dec_ctx),
+	offsetof(struct Name, _asn_ctx),
 	0,	/* XER encoding is XMLDelimitedItemList */
 };
-asn1_TYPE_descriptor_t asn1_DEF_Name = {
+asn_TYPE_descriptor_t asn_DEF_Name = {
 	"Name",
 	SEQUENCE_OF_free,
 	SEQUENCE_OF_print,
@@ -237,15 +237,15 @@
 	0,				/* Not implemented yet */
 	SEQUENCE_OF_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_Name_tags,
-	sizeof(asn1_DEF_Name_tags)
-		/sizeof(asn1_DEF_Name_tags[0]), /* 1 */
-	asn1_DEF_Name_tags,	/* Same as above */
-	sizeof(asn1_DEF_Name_tags)
-		/sizeof(asn1_DEF_Name_tags[0]), /* 1 */
-	asn1_MBR_Name,
+	asn_DEF_Name_tags,
+	sizeof(asn_DEF_Name_tags)
+		/sizeof(asn_DEF_Name_tags[0]), /* 1 */
+	asn_DEF_Name_tags,	/* Same as above */
+	sizeof(asn_DEF_Name_tags)
+		/sizeof(asn_DEF_Name_tags[0]), /* 1 */
+	asn_MBR_Name,
 	1,	/* Single element */
-	&asn1_DEF_Name_specs	/* Additional specs */
+	&asn_DEF_Name_specs	/* Additional specs */
 };
 
 
@@ -257,7 +257,7 @@
 
 /*** <<< DEPS [RelativeDistinguishedName] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_RelativeDistinguishedName;
+extern asn_TYPE_descriptor_t asn_DEF_RelativeDistinguishedName;
 
 /*** <<< TYPE-DECLS [RelativeDistinguishedName] >>> ***/
 
@@ -266,7 +266,7 @@
 	A_SET_OF(IA5String_t) list;
 	
 	/* Context for parsing across buffer boundaries */
-	ber_dec_ctx_t _ber_dec_ctx;
+	asn_struct_ctx_t _asn_ctx;
 } RelativeDistinguishedName_t;
 
 /*** <<< CTABLES [RelativeDistinguishedName] >>> ***/
@@ -300,7 +300,7 @@
 /*** <<< CODE [RelativeDistinguishedName] >>> ***/
 
 static int
-memb_IA5String_2_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+memb_IA5String_2_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	const IA5String_t *st = sptr;
 	
@@ -326,24 +326,24 @@
 
 /*** <<< STAT-DEFS [RelativeDistinguishedName] >>> ***/
 
-static asn1_TYPE_member_t asn1_MBR_RelativeDistinguishedName[] = {
+static asn_TYPE_member_t asn_MBR_RelativeDistinguishedName[] = {
 	{ ATF_NOFLAGS, 0, 0,
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (22 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_IA5String,
+		.type = (void *)&asn_DEF_IA5String,
 		.memb_constraints = memb_IA5String_2_constraint,
 		.name = ""
 		},
 };
-static ber_tlv_tag_t asn1_DEF_RelativeDistinguishedName_tags[] = {
+static ber_tlv_tag_t asn_DEF_RelativeDistinguishedName_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (17 << 2))
 };
-static asn1_SET_OF_specifics_t asn1_DEF_RelativeDistinguishedName_specs = {
+static asn_SET_OF_specifics_t asn_DEF_RelativeDistinguishedName_specs = {
 	sizeof(struct RelativeDistinguishedName),
-	offsetof(struct RelativeDistinguishedName, _ber_dec_ctx),
+	offsetof(struct RelativeDistinguishedName, _asn_ctx),
 	0,	/* XER encoding is XMLDelimitedItemList */
 };
-asn1_TYPE_descriptor_t asn1_DEF_RelativeDistinguishedName = {
+asn_TYPE_descriptor_t asn_DEF_RelativeDistinguishedName = {
 	"RelativeDistinguishedName",
 	SET_OF_free,
 	SET_OF_print,
@@ -353,14 +353,14 @@
 	0,				/* Not implemented yet */
 	SET_OF_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_RelativeDistinguishedName_tags,
-	sizeof(asn1_DEF_RelativeDistinguishedName_tags)
-		/sizeof(asn1_DEF_RelativeDistinguishedName_tags[0]), /* 1 */
-	asn1_DEF_RelativeDistinguishedName_tags,	/* Same as above */
-	sizeof(asn1_DEF_RelativeDistinguishedName_tags)
-		/sizeof(asn1_DEF_RelativeDistinguishedName_tags[0]), /* 1 */
-	asn1_MBR_RelativeDistinguishedName,
+	asn_DEF_RelativeDistinguishedName_tags,
+	sizeof(asn_DEF_RelativeDistinguishedName_tags)
+		/sizeof(asn_DEF_RelativeDistinguishedName_tags[0]), /* 1 */
+	asn_DEF_RelativeDistinguishedName_tags,	/* Same as above */
+	sizeof(asn_DEF_RelativeDistinguishedName_tags)
+		/sizeof(asn_DEF_RelativeDistinguishedName_tags[0]), /* 1 */
+	asn_MBR_RelativeDistinguishedName,
 	1,	/* Single element */
-	&asn1_DEF_RelativeDistinguishedName_specs	/* Additional specs */
+	&asn_DEF_RelativeDistinguishedName_specs	/* Additional specs */
 };
 
diff --git a/tests/31-set-of-OK.asn1.-P b/tests/31-set-of-OK.asn1.-P
index 6bf3d7c..37533f0 100644
--- a/tests/31-set-of-OK.asn1.-P
+++ b/tests/31-set-of-OK.asn1.-P
@@ -7,7 +7,7 @@
 
 /*** <<< DEPS [Forest] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_Forest;
+extern asn_TYPE_descriptor_t asn_DEF_Forest;
 
 /*** <<< TYPE-DECLS [Forest] >>> ***/
 
@@ -16,29 +16,29 @@
 	A_SET_OF(Tree_t) list;
 	
 	/* Context for parsing across buffer boundaries */
-	ber_dec_ctx_t _ber_dec_ctx;
+	asn_struct_ctx_t _asn_ctx;
 } Forest_t;
 
 /*** <<< STAT-DEFS [Forest] >>> ***/
 
-static asn1_TYPE_member_t asn1_MBR_Forest[] = {
+static asn_TYPE_member_t asn_MBR_Forest[] = {
 	{ ATF_NOFLAGS, 0, 0,
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_Tree,
+		.type = (void *)&asn_DEF_Tree,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = ""
 		},
 };
-static ber_tlv_tag_t asn1_DEF_Forest_tags[] = {
+static ber_tlv_tag_t asn_DEF_Forest_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (17 << 2))
 };
-static asn1_SET_OF_specifics_t asn1_DEF_Forest_specs = {
+static asn_SET_OF_specifics_t asn_DEF_Forest_specs = {
 	sizeof(struct Forest),
-	offsetof(struct Forest, _ber_dec_ctx),
+	offsetof(struct Forest, _asn_ctx),
 	0,	/* XER encoding is XMLDelimitedItemList */
 };
-asn1_TYPE_descriptor_t asn1_DEF_Forest = {
+asn_TYPE_descriptor_t asn_DEF_Forest = {
 	"Forest",
 	SET_OF_free,
 	SET_OF_print,
@@ -48,15 +48,15 @@
 	0,				/* Not implemented yet */
 	SET_OF_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_Forest_tags,
-	sizeof(asn1_DEF_Forest_tags)
-		/sizeof(asn1_DEF_Forest_tags[0]), /* 1 */
-	asn1_DEF_Forest_tags,	/* Same as above */
-	sizeof(asn1_DEF_Forest_tags)
-		/sizeof(asn1_DEF_Forest_tags[0]), /* 1 */
-	asn1_MBR_Forest,
+	asn_DEF_Forest_tags,
+	sizeof(asn_DEF_Forest_tags)
+		/sizeof(asn_DEF_Forest_tags[0]), /* 1 */
+	asn_DEF_Forest_tags,	/* Same as above */
+	sizeof(asn_DEF_Forest_tags)
+		/sizeof(asn_DEF_Forest_tags[0]), /* 1 */
+	asn_MBR_Forest,
 	1,	/* Single element */
-	&asn1_DEF_Forest_specs	/* Additional specs */
+	&asn_DEF_Forest_specs	/* Additional specs */
 };
 
 
@@ -67,7 +67,7 @@
 
 /*** <<< DEPS [Tree] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_Tree;
+extern asn_TYPE_descriptor_t asn_DEF_Tree;
 
 /*** <<< TYPE-DECLS [Tree] >>> ***/
 
@@ -77,43 +77,43 @@
 	INTEGER_t	 width;
 	
 	/* Context for parsing across buffer boundaries */
-	ber_dec_ctx_t _ber_dec_ctx;
+	asn_struct_ctx_t _asn_ctx;
 } Tree_t;
 
 /*** <<< STAT-DEFS [Tree] >>> ***/
 
-static asn1_TYPE_member_t asn1_MBR_Tree[] = {
+static asn_TYPE_member_t asn_MBR_Tree[] = {
 	{ ATF_NOFLAGS, 0, offsetof(struct Tree, height),
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_INTEGER,
+		.type = (void *)&asn_DEF_INTEGER,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "height"
 		},
 	{ ATF_NOFLAGS, 0, offsetof(struct Tree, width),
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_INTEGER,
+		.type = (void *)&asn_DEF_INTEGER,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "width"
 		},
 };
-static ber_tlv_tag_t asn1_DEF_Tree_tags[] = {
+static ber_tlv_tag_t asn_DEF_Tree_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn1_TYPE_tag2member_t asn1_DEF_Tree_tag2el[] = {
+static asn_TYPE_tag2member_t asn_DEF_Tree_tag2el[] = {
     { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* height at 17 */
     { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 }, /* width at 19 */
 };
-static asn1_SEQUENCE_specifics_t asn1_DEF_Tree_specs = {
+static asn_SEQUENCE_specifics_t asn_DEF_Tree_specs = {
 	sizeof(struct Tree),
-	offsetof(struct Tree, _ber_dec_ctx),
-	asn1_DEF_Tree_tag2el,
+	offsetof(struct Tree, _asn_ctx),
+	asn_DEF_Tree_tag2el,
 	2,	/* Count of tags in the map */
 	-1,	/* Start extensions */
 	-1	/* Stop extensions */
 };
-asn1_TYPE_descriptor_t asn1_DEF_Tree = {
+asn_TYPE_descriptor_t asn_DEF_Tree = {
 	"Tree",
 	SEQUENCE_free,
 	SEQUENCE_print,
@@ -123,15 +123,15 @@
 	0,				/* Not implemented yet */
 	SEQUENCE_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_Tree_tags,
-	sizeof(asn1_DEF_Tree_tags)
-		/sizeof(asn1_DEF_Tree_tags[0]), /* 1 */
-	asn1_DEF_Tree_tags,	/* Same as above */
-	sizeof(asn1_DEF_Tree_tags)
-		/sizeof(asn1_DEF_Tree_tags[0]), /* 1 */
-	asn1_MBR_Tree,
+	asn_DEF_Tree_tags,
+	sizeof(asn_DEF_Tree_tags)
+		/sizeof(asn_DEF_Tree_tags[0]), /* 1 */
+	asn_DEF_Tree_tags,	/* Same as above */
+	sizeof(asn_DEF_Tree_tags)
+		/sizeof(asn_DEF_Tree_tags[0]), /* 1 */
+	asn_MBR_Tree,
 	2,	/* Elements count */
-	&asn1_DEF_Tree_specs	/* Additional specs */
+	&asn_DEF_Tree_specs	/* Additional specs */
 };
 
 
@@ -154,7 +154,7 @@
 	Stuff_PR_trees,	/* Member trees is present */
 	Stuff_PR_anything,	/* Member anything is present */
 } Stuff_PR;
-extern asn1_TYPE_descriptor_t asn1_DEF_Stuff;
+extern asn_TYPE_descriptor_t asn_DEF_Stuff;
 
 /*** <<< TYPE-DECLS [Stuff] >>> ***/
 
@@ -164,7 +164,7 @@
 		A_SET_OF(Forest_t) list;
 		
 		/* Context for parsing across buffer boundaries */
-		ber_dec_ctx_t _ber_dec_ctx;
+		asn_struct_ctx_t _asn_ctx;
 	} *trees;
 	struct anything {
 		A_SET_OF(struct anything_member {
@@ -175,11 +175,11 @@
 			 */
 			
 			/* Context for parsing across buffer boundaries */
-			ber_dec_ctx_t _ber_dec_ctx;
+			asn_struct_ctx_t _asn_ctx;
 		} ) list;
 		
 		/* Context for parsing across buffer boundaries */
-		ber_dec_ctx_t _ber_dec_ctx;
+		asn_struct_ctx_t _asn_ctx;
 	} *anything;
 	
 	/* Presence bitmask: ASN_SET_ISPRESENT(pStuff, Stuff_PR_x) */
@@ -187,31 +187,31 @@
 		[((2+(8*sizeof(unsigned int))-1)/(8*sizeof(unsigned int)))];
 	
 	/* Context for parsing across buffer boundaries */
-	ber_dec_ctx_t _ber_dec_ctx;
+	asn_struct_ctx_t _asn_ctx;
 } Stuff_t;
 
 /*** <<< STAT-DEFS [Stuff] >>> ***/
 
-static asn1_TYPE_member_t asn1_MBR_trees[] = {
+static asn_TYPE_member_t asn_MBR_trees[] = {
 	{ ATF_NOFLAGS, 0, 0,
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (17 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_Forest,
+		.type = (void *)&asn_DEF_Forest,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = ""
 		},
 };
-static ber_tlv_tag_t asn1_DEF_trees_tags[] = {
+static ber_tlv_tag_t asn_DEF_trees_tags[] = {
 	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 	(ASN_TAG_CLASS_UNIVERSAL | (17 << 2))
 };
-static asn1_SET_OF_specifics_t asn1_DEF_trees_specs = {
+static asn_SET_OF_specifics_t asn_DEF_trees_specs = {
 	sizeof(struct trees),
-	offsetof(struct trees, _ber_dec_ctx),
+	offsetof(struct trees, _asn_ctx),
 	0,	/* XER encoding is XMLDelimitedItemList */
 };
 static /* Use -fall-defs-global to expose */
-asn1_TYPE_descriptor_t asn1_DEF_trees = {
+asn_TYPE_descriptor_t asn_DEF_trees = {
 	"trees",
 	SET_OF_free,
 	SET_OF_print,
@@ -221,42 +221,42 @@
 	0,				/* Not implemented yet */
 	SET_OF_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_trees_tags,
-	sizeof(asn1_DEF_trees_tags)
-		/sizeof(asn1_DEF_trees_tags[0]) - 1, /* 1 */
-	asn1_DEF_trees_tags,	/* Same as above */
-	sizeof(asn1_DEF_trees_tags)
-		/sizeof(asn1_DEF_trees_tags[0]), /* 2 */
-	asn1_MBR_trees,
+	asn_DEF_trees_tags,
+	sizeof(asn_DEF_trees_tags)
+		/sizeof(asn_DEF_trees_tags[0]) - 1, /* 1 */
+	asn_DEF_trees_tags,	/* Same as above */
+	sizeof(asn_DEF_trees_tags)
+		/sizeof(asn_DEF_trees_tags[0]), /* 2 */
+	asn_MBR_trees,
 	1,	/* Single element */
-	&asn1_DEF_trees_specs	/* Additional specs */
+	&asn_DEF_trees_specs	/* Additional specs */
 };
 
-static asn1_TYPE_member_t asn1_MBR_anything_member[] = {
+static asn_TYPE_member_t asn_MBR_anything_member[] = {
 	{ ATF_NOFLAGS, 0, offsetof(struct anything_member, cup_of_coffee),
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_BIT_STRING,
+		.type = (void *)&asn_DEF_BIT_STRING,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "cup-of-coffee"
 		},
 };
-static ber_tlv_tag_t asn1_DEF_anything_member_tags[] = {
+static ber_tlv_tag_t asn_DEF_anything_member_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn1_TYPE_tag2member_t asn1_DEF_anything_member_tag2el[] = {
+static asn_TYPE_tag2member_t asn_DEF_anything_member_tag2el[] = {
     { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 0, 0, 0 }, /* cup-of-coffee at 26 */
 };
-static asn1_SEQUENCE_specifics_t asn1_DEF_anything_member_specs = {
+static asn_SEQUENCE_specifics_t asn_DEF_anything_member_specs = {
 	sizeof(struct anything_member),
-	offsetof(struct anything_member, _ber_dec_ctx),
-	asn1_DEF_anything_member_tag2el,
+	offsetof(struct anything_member, _asn_ctx),
+	asn_DEF_anything_member_tag2el,
 	1,	/* Count of tags in the map */
 	0,	/* Start extensions */
 	2	/* Stop extensions */
 };
 static /* Use -fall-defs-global to expose */
-asn1_TYPE_descriptor_t asn1_DEF_anything_member = {
+asn_TYPE_descriptor_t asn_DEF_anything_member = {
 	"",
 	SEQUENCE_free,
 	SEQUENCE_print,
@@ -266,37 +266,37 @@
 	0,				/* Not implemented yet */
 	SEQUENCE_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_anything_member_tags,
-	sizeof(asn1_DEF_anything_member_tags)
-		/sizeof(asn1_DEF_anything_member_tags[0]), /* 1 */
-	asn1_DEF_anything_member_tags,	/* Same as above */
-	sizeof(asn1_DEF_anything_member_tags)
-		/sizeof(asn1_DEF_anything_member_tags[0]), /* 1 */
-	asn1_MBR_anything_member,
+	asn_DEF_anything_member_tags,
+	sizeof(asn_DEF_anything_member_tags)
+		/sizeof(asn_DEF_anything_member_tags[0]), /* 1 */
+	asn_DEF_anything_member_tags,	/* Same as above */
+	sizeof(asn_DEF_anything_member_tags)
+		/sizeof(asn_DEF_anything_member_tags[0]), /* 1 */
+	asn_MBR_anything_member,
 	1,	/* Elements count */
-	&asn1_DEF_anything_member_specs	/* Additional specs */
+	&asn_DEF_anything_member_specs	/* Additional specs */
 };
 
-static asn1_TYPE_member_t asn1_MBR_anything[] = {
+static asn_TYPE_member_t asn_MBR_anything[] = {
 	{ ATF_NOFLAGS, 0, 0,
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_anything_member,
+		.type = (void *)&asn_DEF_anything_member,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = ""
 		},
 };
-static ber_tlv_tag_t asn1_DEF_anything_tags[] = {
+static ber_tlv_tag_t asn_DEF_anything_tags[] = {
 	(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
 	(ASN_TAG_CLASS_UNIVERSAL | (17 << 2))
 };
-static asn1_SET_OF_specifics_t asn1_DEF_anything_specs = {
+static asn_SET_OF_specifics_t asn_DEF_anything_specs = {
 	sizeof(struct anything),
-	offsetof(struct anything, _ber_dec_ctx),
+	offsetof(struct anything, _asn_ctx),
 	0,	/* XER encoding is XMLDelimitedItemList */
 };
 static /* Use -fall-defs-global to expose */
-asn1_TYPE_descriptor_t asn1_DEF_anything = {
+asn_TYPE_descriptor_t asn_DEF_anything = {
 	"anything",
 	SET_OF_free,
 	SET_OF_print,
@@ -306,53 +306,53 @@
 	0,				/* Not implemented yet */
 	SET_OF_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_anything_tags,
-	sizeof(asn1_DEF_anything_tags)
-		/sizeof(asn1_DEF_anything_tags[0]) - 1, /* 1 */
-	asn1_DEF_anything_tags,	/* Same as above */
-	sizeof(asn1_DEF_anything_tags)
-		/sizeof(asn1_DEF_anything_tags[0]), /* 2 */
-	asn1_MBR_anything,
+	asn_DEF_anything_tags,
+	sizeof(asn_DEF_anything_tags)
+		/sizeof(asn_DEF_anything_tags[0]) - 1, /* 1 */
+	asn_DEF_anything_tags,	/* Same as above */
+	sizeof(asn_DEF_anything_tags)
+		/sizeof(asn_DEF_anything_tags[0]), /* 2 */
+	asn_MBR_anything,
 	1,	/* Single element */
-	&asn1_DEF_anything_specs	/* Additional specs */
+	&asn_DEF_anything_specs	/* Additional specs */
 };
 
-static asn1_TYPE_member_t asn1_MBR_Stuff[] = {
+static asn_TYPE_member_t asn_MBR_Stuff[] = {
 	{ ATF_POINTER, 2, offsetof(struct Stuff, trees),
 		.tag = (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 		.tag_mode = -1,	/* IMPLICIT tag at current level */
-		.type = (void *)&asn1_DEF_trees,
+		.type = (void *)&asn_DEF_trees,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "trees"
 		},
 	{ ATF_POINTER, 1, offsetof(struct Stuff, anything),
 		.tag = (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
 		.tag_mode = -1,	/* IMPLICIT tag at current level */
-		.type = (void *)&asn1_DEF_anything,
+		.type = (void *)&asn_DEF_anything,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "anything"
 		},
 };
-static ber_tlv_tag_t asn1_DEF_Stuff_tags[] = {
+static ber_tlv_tag_t asn_DEF_Stuff_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (17 << 2))
 };
-static asn1_TYPE_tag2member_t asn1_DEF_Stuff_tag2el[] = {
+static asn_TYPE_tag2member_t asn_DEF_Stuff_tag2el[] = {
     { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* trees at 23 */
     { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* anything at 28 */
 };
-static uint8_t asn1_DEF_Stuff_mmap[(2 + (8 * sizeof(unsigned int)) - 1) / 8] = {
+static uint8_t asn_DEF_Stuff_mmap[(2 + (8 * sizeof(unsigned int)) - 1) / 8] = {
 	(0 << 7) | (0 << 6)
 };
-static asn1_SET_specifics_t asn1_DEF_Stuff_specs = {
+static asn_SET_specifics_t asn_DEF_Stuff_specs = {
 	sizeof(struct Stuff),
-	offsetof(struct Stuff, _ber_dec_ctx),
+	offsetof(struct Stuff, _asn_ctx),
 	offsetof(struct Stuff, _presence_map),
-	asn1_DEF_Stuff_tag2el,
+	asn_DEF_Stuff_tag2el,
 	2,	/* Count of tags in the map */
 	0,	/* Whether extensible */
-	(unsigned int *)asn1_DEF_Stuff_mmap	/* Mandatory elements map */
+	(unsigned int *)asn_DEF_Stuff_mmap	/* Mandatory elements map */
 };
-asn1_TYPE_descriptor_t asn1_DEF_Stuff = {
+asn_TYPE_descriptor_t asn_DEF_Stuff = {
 	"Stuff",
 	SET_free,
 	SET_print,
@@ -362,14 +362,14 @@
 	0,				/* Not implemented yet */
 	SET_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_Stuff_tags,
-	sizeof(asn1_DEF_Stuff_tags)
-		/sizeof(asn1_DEF_Stuff_tags[0]), /* 1 */
-	asn1_DEF_Stuff_tags,	/* Same as above */
-	sizeof(asn1_DEF_Stuff_tags)
-		/sizeof(asn1_DEF_Stuff_tags[0]), /* 1 */
-	asn1_MBR_Stuff,
+	asn_DEF_Stuff_tags,
+	sizeof(asn_DEF_Stuff_tags)
+		/sizeof(asn_DEF_Stuff_tags[0]), /* 1 */
+	asn_DEF_Stuff_tags,	/* Same as above */
+	sizeof(asn_DEF_Stuff_tags)
+		/sizeof(asn_DEF_Stuff_tags[0]), /* 1 */
+	asn_MBR_Stuff,
 	2,	/* Elements count */
-	&asn1_DEF_Stuff_specs	/* Additional specs */
+	&asn_DEF_Stuff_specs	/* Additional specs */
 };
 
diff --git a/tests/32-sequence-of-OK.asn1.-P b/tests/32-sequence-of-OK.asn1.-P
index e258529..508eb05 100644
--- a/tests/32-sequence-of-OK.asn1.-P
+++ b/tests/32-sequence-of-OK.asn1.-P
@@ -7,7 +7,7 @@
 
 /*** <<< DEPS [Programming] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_Programming;
+extern asn_TYPE_descriptor_t asn_DEF_Programming;
 
 /*** <<< TYPE-DECLS [Programming] >>> ***/
 
@@ -16,29 +16,29 @@
 	A_SEQUENCE_OF(Fault_t) list;
 	
 	/* Context for parsing across buffer boundaries */
-	ber_dec_ctx_t _ber_dec_ctx;
+	asn_struct_ctx_t _asn_ctx;
 } Programming_t;
 
 /*** <<< STAT-DEFS [Programming] >>> ***/
 
-static asn1_TYPE_member_t asn1_MBR_Programming[] = {
+static asn_TYPE_member_t asn_MBR_Programming[] = {
 	{ ATF_NOFLAGS, 0, 0,
 		.tag = (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 		.tag_mode = -1,	/* IMPLICIT tag at current level */
-		.type = (void *)&asn1_DEF_Fault,
+		.type = (void *)&asn_DEF_Fault,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = ""
 		},
 };
-static ber_tlv_tag_t asn1_DEF_Programming_tags[] = {
+static ber_tlv_tag_t asn_DEF_Programming_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn1_SET_OF_specifics_t asn1_DEF_Programming_specs = {
+static asn_SET_OF_specifics_t asn_DEF_Programming_specs = {
 	sizeof(struct Programming),
-	offsetof(struct Programming, _ber_dec_ctx),
+	offsetof(struct Programming, _asn_ctx),
 	0,	/* XER encoding is XMLDelimitedItemList */
 };
-asn1_TYPE_descriptor_t asn1_DEF_Programming = {
+asn_TYPE_descriptor_t asn_DEF_Programming = {
 	"Programming",
 	SEQUENCE_OF_free,
 	SEQUENCE_OF_print,
@@ -48,15 +48,15 @@
 	0,				/* Not implemented yet */
 	SEQUENCE_OF_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_Programming_tags,
-	sizeof(asn1_DEF_Programming_tags)
-		/sizeof(asn1_DEF_Programming_tags[0]), /* 1 */
-	asn1_DEF_Programming_tags,	/* Same as above */
-	sizeof(asn1_DEF_Programming_tags)
-		/sizeof(asn1_DEF_Programming_tags[0]), /* 1 */
-	asn1_MBR_Programming,
+	asn_DEF_Programming_tags,
+	sizeof(asn_DEF_Programming_tags)
+		/sizeof(asn_DEF_Programming_tags[0]), /* 1 */
+	asn_DEF_Programming_tags,	/* Same as above */
+	sizeof(asn_DEF_Programming_tags)
+		/sizeof(asn_DEF_Programming_tags[0]), /* 1 */
+	asn_MBR_Programming,
 	1,	/* Single element */
-	&asn1_DEF_Programming_specs	/* Additional specs */
+	&asn_DEF_Programming_specs	/* Additional specs */
 };
 
 
@@ -68,7 +68,7 @@
 
 /*** <<< DEPS [Fault] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_Fault;
+extern asn_TYPE_descriptor_t asn_DEF_Fault;
 
 /*** <<< TYPE-DECLS [Fault] >>> ***/
 
@@ -77,29 +77,29 @@
 	A_SET_OF(Error_t) list;
 	
 	/* Context for parsing across buffer boundaries */
-	ber_dec_ctx_t _ber_dec_ctx;
+	asn_struct_ctx_t _asn_ctx;
 } Fault_t;
 
 /*** <<< STAT-DEFS [Fault] >>> ***/
 
-static asn1_TYPE_member_t asn1_MBR_Fault[] = {
+static asn_TYPE_member_t asn_MBR_Fault[] = {
 	{ ATF_NOFLAGS, 0, 0,
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_Error,
+		.type = (void *)&asn_DEF_Error,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = ""
 		},
 };
-static ber_tlv_tag_t asn1_DEF_Fault_tags[] = {
+static ber_tlv_tag_t asn_DEF_Fault_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (17 << 2))
 };
-static asn1_SET_OF_specifics_t asn1_DEF_Fault_specs = {
+static asn_SET_OF_specifics_t asn_DEF_Fault_specs = {
 	sizeof(struct Fault),
-	offsetof(struct Fault, _ber_dec_ctx),
+	offsetof(struct Fault, _asn_ctx),
 	0,	/* XER encoding is XMLDelimitedItemList */
 };
-asn1_TYPE_descriptor_t asn1_DEF_Fault = {
+asn_TYPE_descriptor_t asn_DEF_Fault = {
 	"Fault",
 	SET_OF_free,
 	SET_OF_print,
@@ -109,15 +109,15 @@
 	0,				/* Not implemented yet */
 	SET_OF_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_Fault_tags,
-	sizeof(asn1_DEF_Fault_tags)
-		/sizeof(asn1_DEF_Fault_tags[0]), /* 1 */
-	asn1_DEF_Fault_tags,	/* Same as above */
-	sizeof(asn1_DEF_Fault_tags)
-		/sizeof(asn1_DEF_Fault_tags[0]), /* 1 */
-	asn1_MBR_Fault,
+	asn_DEF_Fault_tags,
+	sizeof(asn_DEF_Fault_tags)
+		/sizeof(asn_DEF_Fault_tags[0]), /* 1 */
+	asn_DEF_Fault_tags,	/* Same as above */
+	sizeof(asn_DEF_Fault_tags)
+		/sizeof(asn_DEF_Fault_tags[0]), /* 1 */
+	asn_MBR_Fault,
 	1,	/* Single element */
-	&asn1_DEF_Fault_specs	/* Additional specs */
+	&asn_DEF_Fault_specs	/* Additional specs */
 };
 
 
@@ -127,7 +127,7 @@
 
 /*** <<< DEPS [Error] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_Error;
+extern asn_TYPE_descriptor_t asn_DEF_Error;
 
 /*** <<< TYPE-DECLS [Error] >>> ***/
 
@@ -139,25 +139,25 @@
 	 */
 	
 	/* Context for parsing across buffer boundaries */
-	ber_dec_ctx_t _ber_dec_ctx;
+	asn_struct_ctx_t _asn_ctx;
 } Error_t;
 
 /*** <<< STAT-DEFS [Error] >>> ***/
 
-static ber_tlv_tag_t asn1_DEF_Error_tags[] = {
+static ber_tlv_tag_t asn_DEF_Error_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn1_TYPE_tag2member_t asn1_DEF_Error_tag2el[] = {
+static asn_TYPE_tag2member_t asn_DEF_Error_tag2el[] = {
 };
-static asn1_SEQUENCE_specifics_t asn1_DEF_Error_specs = {
+static asn_SEQUENCE_specifics_t asn_DEF_Error_specs = {
 	sizeof(struct Error),
-	offsetof(struct Error, _ber_dec_ctx),
-	asn1_DEF_Error_tag2el,
+	offsetof(struct Error, _asn_ctx),
+	asn_DEF_Error_tag2el,
 	0,	/* Count of tags in the map */
 	-1,	/* Start extensions */
 	-1	/* Stop extensions */
 };
-asn1_TYPE_descriptor_t asn1_DEF_Error = {
+asn_TYPE_descriptor_t asn_DEF_Error = {
 	"Error",
 	SEQUENCE_free,
 	SEQUENCE_print,
@@ -167,13 +167,13 @@
 	0,				/* Not implemented yet */
 	SEQUENCE_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_Error_tags,
-	sizeof(asn1_DEF_Error_tags)
-		/sizeof(asn1_DEF_Error_tags[0]), /* 1 */
-	asn1_DEF_Error_tags,	/* Same as above */
-	sizeof(asn1_DEF_Error_tags)
-		/sizeof(asn1_DEF_Error_tags[0]), /* 1 */
+	asn_DEF_Error_tags,
+	sizeof(asn_DEF_Error_tags)
+		/sizeof(asn_DEF_Error_tags[0]), /* 1 */
+	asn_DEF_Error_tags,	/* Same as above */
+	sizeof(asn_DEF_Error_tags)
+		/sizeof(asn_DEF_Error_tags[0]), /* 1 */
 	0, 0,	/* No members */
-	&asn1_DEF_Error_specs	/* Additional specs */
+	&asn_DEF_Error_specs	/* Additional specs */
 };
 
diff --git a/tests/39-sequence-of-OK.asn1.-P b/tests/39-sequence-of-OK.asn1.-P
index b8f9f59..6ef4a4f 100644
--- a/tests/39-sequence-of-OK.asn1.-P
+++ b/tests/39-sequence-of-OK.asn1.-P
@@ -9,7 +9,7 @@
 
 /*** <<< DEPS [T] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_T;
+extern asn_TYPE_descriptor_t asn_DEF_T;
 
 /*** <<< TYPE-DECLS [T] >>> ***/
 
@@ -20,34 +20,34 @@
 		A_SEQUENCE_OF(T2_t) list;
 		
 		/* Context for parsing across buffer boundaries */
-		ber_dec_ctx_t _ber_dec_ctx;
+		asn_struct_ctx_t _asn_ctx;
 	} collection;
 	
 	/* Context for parsing across buffer boundaries */
-	ber_dec_ctx_t _ber_dec_ctx;
+	asn_struct_ctx_t _asn_ctx;
 } T_t;
 
 /*** <<< STAT-DEFS [T] >>> ***/
 
-static asn1_TYPE_member_t asn1_MBR_collection[] = {
+static asn_TYPE_member_t asn_MBR_collection[] = {
 	{ ATF_NOFLAGS, 0, 0,
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_T2,
+		.type = (void *)&asn_DEF_T2,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = ""
 		},
 };
-static ber_tlv_tag_t asn1_DEF_collection_tags[] = {
+static ber_tlv_tag_t asn_DEF_collection_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn1_SET_OF_specifics_t asn1_DEF_collection_specs = {
+static asn_SET_OF_specifics_t asn_DEF_collection_specs = {
 	sizeof(struct collection),
-	offsetof(struct collection, _ber_dec_ctx),
+	offsetof(struct collection, _asn_ctx),
 	0,	/* XER encoding is XMLDelimitedItemList */
 };
 static /* Use -fall-defs-global to expose */
-asn1_TYPE_descriptor_t asn1_DEF_collection = {
+asn_TYPE_descriptor_t asn_DEF_collection = {
 	"collection",
 	SEQUENCE_OF_free,
 	SEQUENCE_OF_print,
@@ -57,49 +57,49 @@
 	0,				/* Not implemented yet */
 	SEQUENCE_OF_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_collection_tags,
-	sizeof(asn1_DEF_collection_tags)
-		/sizeof(asn1_DEF_collection_tags[0]), /* 1 */
-	asn1_DEF_collection_tags,	/* Same as above */
-	sizeof(asn1_DEF_collection_tags)
-		/sizeof(asn1_DEF_collection_tags[0]), /* 1 */
-	asn1_MBR_collection,
+	asn_DEF_collection_tags,
+	sizeof(asn_DEF_collection_tags)
+		/sizeof(asn_DEF_collection_tags[0]), /* 1 */
+	asn_DEF_collection_tags,	/* Same as above */
+	sizeof(asn_DEF_collection_tags)
+		/sizeof(asn_DEF_collection_tags[0]), /* 1 */
+	asn_MBR_collection,
 	1,	/* Single element */
-	&asn1_DEF_collection_specs	/* Additional specs */
+	&asn_DEF_collection_specs	/* Additional specs */
 };
 
-static asn1_TYPE_member_t asn1_MBR_T[] = {
+static asn_TYPE_member_t asn_MBR_T[] = {
 	{ ATF_NOFLAGS, 0, offsetof(struct T, int),
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_INTEGER,
+		.type = (void *)&asn_DEF_INTEGER,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "int"
 		},
 	{ ATF_NOFLAGS, 0, offsetof(struct T, collection),
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_collection,
+		.type = (void *)&asn_DEF_collection,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "collection"
 		},
 };
-static ber_tlv_tag_t asn1_DEF_T_tags[] = {
+static ber_tlv_tag_t asn_DEF_T_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn1_TYPE_tag2member_t asn1_DEF_T_tag2el[] = {
+static asn_TYPE_tag2member_t asn_DEF_T_tag2el[] = {
     { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* int at 15 */
     { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 }, /* collection at 17 */
 };
-static asn1_SEQUENCE_specifics_t asn1_DEF_T_specs = {
+static asn_SEQUENCE_specifics_t asn_DEF_T_specs = {
 	sizeof(struct T),
-	offsetof(struct T, _ber_dec_ctx),
-	asn1_DEF_T_tag2el,
+	offsetof(struct T, _asn_ctx),
+	asn_DEF_T_tag2el,
 	2,	/* Count of tags in the map */
 	-1,	/* Start extensions */
 	-1	/* Stop extensions */
 };
-asn1_TYPE_descriptor_t asn1_DEF_T = {
+asn_TYPE_descriptor_t asn_DEF_T = {
 	"T",
 	SEQUENCE_free,
 	SEQUENCE_print,
@@ -109,15 +109,15 @@
 	0,				/* Not implemented yet */
 	SEQUENCE_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_T_tags,
-	sizeof(asn1_DEF_T_tags)
-		/sizeof(asn1_DEF_T_tags[0]), /* 1 */
-	asn1_DEF_T_tags,	/* Same as above */
-	sizeof(asn1_DEF_T_tags)
-		/sizeof(asn1_DEF_T_tags[0]), /* 1 */
-	asn1_MBR_T,
+	asn_DEF_T_tags,
+	sizeof(asn_DEF_T_tags)
+		/sizeof(asn_DEF_T_tags[0]), /* 1 */
+	asn_DEF_T_tags,	/* Same as above */
+	sizeof(asn_DEF_T_tags)
+		/sizeof(asn_DEF_T_tags[0]), /* 1 */
+	asn_MBR_T,
 	2,	/* Elements count */
-	&asn1_DEF_T_specs	/* Additional specs */
+	&asn_DEF_T_specs	/* Additional specs */
 };
 
 
@@ -129,7 +129,7 @@
 
 /*** <<< DEPS [T2] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_T2;
+extern asn_TYPE_descriptor_t asn_DEF_T2;
 
 /*** <<< TYPE-DECLS [T2] >>> ***/
 
@@ -139,43 +139,43 @@
 	UTF8String_t	 str;
 	
 	/* Context for parsing across buffer boundaries */
-	ber_dec_ctx_t _ber_dec_ctx;
+	asn_struct_ctx_t _asn_ctx;
 } T2_t;
 
 /*** <<< STAT-DEFS [T2] >>> ***/
 
-static asn1_TYPE_member_t asn1_MBR_T2[] = {
+static asn_TYPE_member_t asn_MBR_T2[] = {
 	{ ATF_NOFLAGS, 0, offsetof(struct T2, flag),
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (1 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_BOOLEAN,
+		.type = (void *)&asn_DEF_BOOLEAN,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "flag"
 		},
 	{ ATF_NOFLAGS, 0, offsetof(struct T2, str),
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (12 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_UTF8String,
+		.type = (void *)&asn_DEF_UTF8String,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "str"
 		},
 };
-static ber_tlv_tag_t asn1_DEF_T2_tags[] = {
+static ber_tlv_tag_t asn_DEF_T2_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn1_TYPE_tag2member_t asn1_DEF_T2_tag2el[] = {
+static asn_TYPE_tag2member_t asn_DEF_T2_tag2el[] = {
     { (ASN_TAG_CLASS_UNIVERSAL | (1 << 2)), 0, 0, 0 }, /* flag at 20 */
     { (ASN_TAG_CLASS_UNIVERSAL | (12 << 2)), 1, 0, 0 }, /* str at 21 */
 };
-static asn1_SEQUENCE_specifics_t asn1_DEF_T2_specs = {
+static asn_SEQUENCE_specifics_t asn_DEF_T2_specs = {
 	sizeof(struct T2),
-	offsetof(struct T2, _ber_dec_ctx),
-	asn1_DEF_T2_tag2el,
+	offsetof(struct T2, _asn_ctx),
+	asn_DEF_T2_tag2el,
 	2,	/* Count of tags in the map */
 	-1,	/* Start extensions */
 	-1	/* Stop extensions */
 };
-asn1_TYPE_descriptor_t asn1_DEF_T2 = {
+asn_TYPE_descriptor_t asn_DEF_T2 = {
 	"T2",
 	SEQUENCE_free,
 	SEQUENCE_print,
@@ -185,14 +185,14 @@
 	0,				/* Not implemented yet */
 	SEQUENCE_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_T2_tags,
-	sizeof(asn1_DEF_T2_tags)
-		/sizeof(asn1_DEF_T2_tags[0]), /* 1 */
-	asn1_DEF_T2_tags,	/* Same as above */
-	sizeof(asn1_DEF_T2_tags)
-		/sizeof(asn1_DEF_T2_tags[0]), /* 1 */
-	asn1_MBR_T2,
+	asn_DEF_T2_tags,
+	sizeof(asn_DEF_T2_tags)
+		/sizeof(asn_DEF_T2_tags[0]), /* 1 */
+	asn_DEF_T2_tags,	/* Same as above */
+	sizeof(asn_DEF_T2_tags)
+		/sizeof(asn_DEF_T2_tags[0]), /* 1 */
+	asn_MBR_T2,
 	2,	/* Elements count */
-	&asn1_DEF_T2_specs	/* Additional specs */
+	&asn_DEF_T2_specs	/* Additional specs */
 };
 
diff --git a/tests/42-real-life-OK.asn1.-PR b/tests/42-real-life-OK.asn1.-PR
index f26068f..1bfd634 100644
--- a/tests/42-real-life-OK.asn1.-PR
+++ b/tests/42-real-life-OK.asn1.-PR
@@ -9,7 +9,7 @@
 
 /*** <<< DEPS [LogLine] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_LogLine;
+extern asn_TYPE_descriptor_t asn_DEF_LogLine;
 
 /*** <<< TYPE-DECLS [LogLine] >>> ***/
 
@@ -20,7 +20,7 @@
 		A_SEQUENCE_OF(VariablePartSet_t) list;
 		
 		/* Context for parsing across buffer boundaries */
-		ber_dec_ctx_t _ber_dec_ctx;
+		asn_struct_ctx_t _asn_ctx;
 	} varsets;
 	/*
 	 * This type is extensible,
@@ -28,13 +28,13 @@
 	 */
 	
 	/* Context for parsing across buffer boundaries */
-	ber_dec_ctx_t _ber_dec_ctx;
+	asn_struct_ctx_t _asn_ctx;
 } LogLine_t;
 
 /*** <<< CODE [LogLine] >>> ***/
 
 static int
-memb_varsets_1_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+memb_varsets_1_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	size_t size;
 	
@@ -65,25 +65,25 @@
 
 /*** <<< STAT-DEFS [LogLine] >>> ***/
 
-static asn1_TYPE_member_t asn1_MBR_varsets[] = {
+static asn_TYPE_member_t asn_MBR_varsets[] = {
 	{ ATF_NOFLAGS, 0, 0,
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_VariablePartSet,
+		.type = (void *)&asn_DEF_VariablePartSet,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = ""
 		},
 };
-static ber_tlv_tag_t asn1_DEF_varsets_tags[] = {
+static ber_tlv_tag_t asn_DEF_varsets_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn1_SET_OF_specifics_t asn1_DEF_varsets_specs = {
+static asn_SET_OF_specifics_t asn_DEF_varsets_specs = {
 	sizeof(struct varsets),
-	offsetof(struct varsets, _ber_dec_ctx),
+	offsetof(struct varsets, _asn_ctx),
 	0,	/* XER encoding is XMLDelimitedItemList */
 };
 static /* Use -fall-defs-global to expose */
-asn1_TYPE_descriptor_t asn1_DEF_varsets = {
+asn_TYPE_descriptor_t asn_DEF_varsets = {
 	"varsets",
 	SEQUENCE_OF_free,
 	SEQUENCE_OF_print,
@@ -93,49 +93,49 @@
 	0,				/* Not implemented yet */
 	SEQUENCE_OF_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_varsets_tags,
-	sizeof(asn1_DEF_varsets_tags)
-		/sizeof(asn1_DEF_varsets_tags[0]), /* 1 */
-	asn1_DEF_varsets_tags,	/* Same as above */
-	sizeof(asn1_DEF_varsets_tags)
-		/sizeof(asn1_DEF_varsets_tags[0]), /* 1 */
-	asn1_MBR_varsets,
+	asn_DEF_varsets_tags,
+	sizeof(asn_DEF_varsets_tags)
+		/sizeof(asn_DEF_varsets_tags[0]), /* 1 */
+	asn_DEF_varsets_tags,	/* Same as above */
+	sizeof(asn_DEF_varsets_tags)
+		/sizeof(asn_DEF_varsets_tags[0]), /* 1 */
+	asn_MBR_varsets,
 	1,	/* Single element */
-	&asn1_DEF_varsets_specs	/* Additional specs */
+	&asn_DEF_varsets_specs	/* Additional specs */
 };
 
-static asn1_TYPE_member_t asn1_MBR_LogLine[] = {
+static asn_TYPE_member_t asn_MBR_LogLine[] = {
 	{ ATF_NOFLAGS, 0, offsetof(struct LogLine, line_digest),
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (22 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_IA5String,
+		.type = (void *)&asn_DEF_IA5String,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "line-digest"
 		},
 	{ ATF_NOFLAGS, 0, offsetof(struct LogLine, varsets),
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_varsets,
+		.type = (void *)&asn_DEF_varsets,
 		.memb_constraints = memb_varsets_1_constraint,
 		.name = "varsets"
 		},
 };
-static ber_tlv_tag_t asn1_DEF_LogLine_tags[] = {
+static ber_tlv_tag_t asn_DEF_LogLine_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn1_TYPE_tag2member_t asn1_DEF_LogLine_tag2el[] = {
+static asn_TYPE_tag2member_t asn_DEF_LogLine_tag2el[] = {
     { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 }, /* varsets at 25 */
     { (ASN_TAG_CLASS_UNIVERSAL | (22 << 2)), 0, 0, 0 }, /* line-digest at 23 */
 };
-static asn1_SEQUENCE_specifics_t asn1_DEF_LogLine_specs = {
+static asn_SEQUENCE_specifics_t asn_DEF_LogLine_specs = {
 	sizeof(struct LogLine),
-	offsetof(struct LogLine, _ber_dec_ctx),
-	asn1_DEF_LogLine_tag2el,
+	offsetof(struct LogLine, _asn_ctx),
+	asn_DEF_LogLine_tag2el,
 	2,	/* Count of tags in the map */
 	1,	/* Start extensions */
 	3	/* Stop extensions */
 };
-asn1_TYPE_descriptor_t asn1_DEF_LogLine = {
+asn_TYPE_descriptor_t asn_DEF_LogLine = {
 	"LogLine",
 	SEQUENCE_free,
 	SEQUENCE_print,
@@ -145,15 +145,15 @@
 	0,				/* Not implemented yet */
 	SEQUENCE_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_LogLine_tags,
-	sizeof(asn1_DEF_LogLine_tags)
-		/sizeof(asn1_DEF_LogLine_tags[0]), /* 1 */
-	asn1_DEF_LogLine_tags,	/* Same as above */
-	sizeof(asn1_DEF_LogLine_tags)
-		/sizeof(asn1_DEF_LogLine_tags[0]), /* 1 */
-	asn1_MBR_LogLine,
+	asn_DEF_LogLine_tags,
+	sizeof(asn_DEF_LogLine_tags)
+		/sizeof(asn_DEF_LogLine_tags[0]), /* 1 */
+	asn_DEF_LogLine_tags,	/* Same as above */
+	sizeof(asn_DEF_LogLine_tags)
+		/sizeof(asn_DEF_LogLine_tags[0]), /* 1 */
+	asn_MBR_LogLine,
 	2,	/* Elements count */
-	&asn1_DEF_LogLine_specs	/* Additional specs */
+	&asn_DEF_LogLine_specs	/* Additional specs */
 };
 
 
@@ -167,7 +167,7 @@
 
 /*** <<< DEPS [VariablePartSet] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_VariablePartSet;
+extern asn_TYPE_descriptor_t asn_DEF_VariablePartSet;
 
 /*** <<< TYPE-DECLS [VariablePartSet] >>> ***/
 
@@ -177,7 +177,7 @@
 		A_SEQUENCE_OF(VariablePart_t) list;
 		
 		/* Context for parsing across buffer boundaries */
-		ber_dec_ctx_t _ber_dec_ctx;
+		asn_struct_ctx_t _asn_ctx;
 	} vparts;
 	ActionItem_t	 resolution;
 	/*
@@ -186,13 +186,13 @@
 	 */
 	
 	/* Context for parsing across buffer boundaries */
-	ber_dec_ctx_t _ber_dec_ctx;
+	asn_struct_ctx_t _asn_ctx;
 } VariablePartSet_t;
 
 /*** <<< CODE [VariablePartSet] >>> ***/
 
 static int
-memb_vparts_2_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+memb_vparts_2_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	
 	if(!sptr) {
@@ -213,25 +213,25 @@
 
 /*** <<< STAT-DEFS [VariablePartSet] >>> ***/
 
-static asn1_TYPE_member_t asn1_MBR_vparts[] = {
+static asn_TYPE_member_t asn_MBR_vparts[] = {
 	{ ATF_NOFLAGS, 0, 0,
 		.tag = -1 /* Ambiguous tag (CHOICE?) */,
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_VariablePart,
+		.type = (void *)&asn_DEF_VariablePart,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = ""
 		},
 };
-static ber_tlv_tag_t asn1_DEF_vparts_tags[] = {
+static ber_tlv_tag_t asn_DEF_vparts_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn1_SET_OF_specifics_t asn1_DEF_vparts_specs = {
+static asn_SET_OF_specifics_t asn_DEF_vparts_specs = {
 	sizeof(struct vparts),
-	offsetof(struct vparts, _ber_dec_ctx),
+	offsetof(struct vparts, _asn_ctx),
 	1,	/* XER encoding is XMLValueList */
 };
 static /* Use -fall-defs-global to expose */
-asn1_TYPE_descriptor_t asn1_DEF_vparts = {
+asn_TYPE_descriptor_t asn_DEF_vparts = {
 	"vparts",
 	SEQUENCE_OF_free,
 	SEQUENCE_OF_print,
@@ -241,49 +241,49 @@
 	0,				/* Not implemented yet */
 	SEQUENCE_OF_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_vparts_tags,
-	sizeof(asn1_DEF_vparts_tags)
-		/sizeof(asn1_DEF_vparts_tags[0]), /* 1 */
-	asn1_DEF_vparts_tags,	/* Same as above */
-	sizeof(asn1_DEF_vparts_tags)
-		/sizeof(asn1_DEF_vparts_tags[0]), /* 1 */
-	asn1_MBR_vparts,
+	asn_DEF_vparts_tags,
+	sizeof(asn_DEF_vparts_tags)
+		/sizeof(asn_DEF_vparts_tags[0]), /* 1 */
+	asn_DEF_vparts_tags,	/* Same as above */
+	sizeof(asn_DEF_vparts_tags)
+		/sizeof(asn_DEF_vparts_tags[0]), /* 1 */
+	asn_MBR_vparts,
 	1,	/* Single element */
-	&asn1_DEF_vparts_specs	/* Additional specs */
+	&asn_DEF_vparts_specs	/* Additional specs */
 };
 
-static asn1_TYPE_member_t asn1_MBR_VariablePartSet[] = {
+static asn_TYPE_member_t asn_MBR_VariablePartSet[] = {
 	{ ATF_NOFLAGS, 0, offsetof(struct VariablePartSet, vparts),
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_vparts,
+		.type = (void *)&asn_DEF_vparts,
 		.memb_constraints = memb_vparts_2_constraint,
 		.name = "vparts"
 		},
 	{ ATF_NOFLAGS, 0, offsetof(struct VariablePartSet, resolution),
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_ActionItem,
+		.type = (void *)&asn_DEF_ActionItem,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "resolution"
 		},
 };
-static ber_tlv_tag_t asn1_DEF_VariablePartSet_tags[] = {
+static ber_tlv_tag_t asn_DEF_VariablePartSet_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn1_TYPE_tag2member_t asn1_DEF_VariablePartSet_tag2el[] = {
+static asn_TYPE_tag2member_t asn_DEF_VariablePartSet_tag2el[] = {
     { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* vparts at 33 */
     { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 }, /* resolution at 35 */
 };
-static asn1_SEQUENCE_specifics_t asn1_DEF_VariablePartSet_specs = {
+static asn_SEQUENCE_specifics_t asn_DEF_VariablePartSet_specs = {
 	sizeof(struct VariablePartSet),
-	offsetof(struct VariablePartSet, _ber_dec_ctx),
-	asn1_DEF_VariablePartSet_tag2el,
+	offsetof(struct VariablePartSet, _asn_ctx),
+	asn_DEF_VariablePartSet_tag2el,
 	2,	/* Count of tags in the map */
 	1,	/* Start extensions */
 	3	/* Stop extensions */
 };
-asn1_TYPE_descriptor_t asn1_DEF_VariablePartSet = {
+asn_TYPE_descriptor_t asn_DEF_VariablePartSet = {
 	"VariablePartSet",
 	SEQUENCE_free,
 	SEQUENCE_print,
@@ -293,15 +293,15 @@
 	0,				/* Not implemented yet */
 	SEQUENCE_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_VariablePartSet_tags,
-	sizeof(asn1_DEF_VariablePartSet_tags)
-		/sizeof(asn1_DEF_VariablePartSet_tags[0]), /* 1 */
-	asn1_DEF_VariablePartSet_tags,	/* Same as above */
-	sizeof(asn1_DEF_VariablePartSet_tags)
-		/sizeof(asn1_DEF_VariablePartSet_tags[0]), /* 1 */
-	asn1_MBR_VariablePartSet,
+	asn_DEF_VariablePartSet_tags,
+	sizeof(asn_DEF_VariablePartSet_tags)
+		/sizeof(asn_DEF_VariablePartSet_tags[0]), /* 1 */
+	asn_DEF_VariablePartSet_tags,	/* Same as above */
+	sizeof(asn_DEF_VariablePartSet_tags)
+		/sizeof(asn_DEF_VariablePartSet_tags[0]), /* 1 */
+	asn_MBR_VariablePartSet,
 	2,	/* Elements count */
-	&asn1_DEF_VariablePartSet_specs	/* Additional specs */
+	&asn_DEF_VariablePartSet_specs	/* Additional specs */
 };
 
 
@@ -321,7 +321,7 @@
 	VariablePart_PR_vrange,
 	/* Extensions may appear below */
 } VariablePart_PR;
-extern asn1_TYPE_descriptor_t asn1_DEF_VariablePart;
+extern asn_TYPE_descriptor_t asn_DEF_VariablePart;
 
 /*** <<< TYPE-DECLS [VariablePart] >>> ***/
 
@@ -333,7 +333,7 @@
 			A_SET_OF(VisibleString_t) list;
 			
 			/* Context for parsing across buffer boundaries */
-			ber_dec_ctx_t _ber_dec_ctx;
+			asn_struct_ctx_t _asn_ctx;
 		} vset;
 		struct vrange {
 			VisibleString_t	 from;
@@ -344,7 +344,7 @@
 			 */
 			
 			/* Context for parsing across buffer boundaries */
-			ber_dec_ctx_t _ber_dec_ctx;
+			asn_struct_ctx_t _asn_ctx;
 		} vrange;
 		/*
 		 * This type is extensible,
@@ -353,13 +353,13 @@
 	} choice;
 	
 	/* Context for parsing across buffer boundaries */
-	ber_dec_ctx_t _ber_dec_ctx;
+	asn_struct_ctx_t _asn_ctx;
 } VariablePart_t;
 
 /*** <<< CODE [VariablePart] >>> ***/
 
 static int
-memb_vset_3_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+memb_vset_3_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	size_t size;
 	
@@ -390,25 +390,25 @@
 
 /*** <<< STAT-DEFS [VariablePart] >>> ***/
 
-static asn1_TYPE_member_t asn1_MBR_vset[] = {
+static asn_TYPE_member_t asn_MBR_vset[] = {
 	{ ATF_NOFLAGS, 0, 0,
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (26 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_VisibleString,
+		.type = (void *)&asn_DEF_VisibleString,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = ""
 		},
 };
-static ber_tlv_tag_t asn1_DEF_vset_tags[] = {
+static ber_tlv_tag_t asn_DEF_vset_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (17 << 2))
 };
-static asn1_SET_OF_specifics_t asn1_DEF_vset_specs = {
+static asn_SET_OF_specifics_t asn_DEF_vset_specs = {
 	sizeof(struct vset),
-	offsetof(struct vset, _ber_dec_ctx),
+	offsetof(struct vset, _asn_ctx),
 	0,	/* XER encoding is XMLDelimitedItemList */
 };
 static /* Use -fall-defs-global to expose */
-asn1_TYPE_descriptor_t asn1_DEF_vset = {
+asn_TYPE_descriptor_t asn_DEF_vset = {
 	"vset",
 	SET_OF_free,
 	SET_OF_print,
@@ -418,50 +418,50 @@
 	0,				/* Not implemented yet */
 	SET_OF_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_vset_tags,
-	sizeof(asn1_DEF_vset_tags)
-		/sizeof(asn1_DEF_vset_tags[0]), /* 1 */
-	asn1_DEF_vset_tags,	/* Same as above */
-	sizeof(asn1_DEF_vset_tags)
-		/sizeof(asn1_DEF_vset_tags[0]), /* 1 */
-	asn1_MBR_vset,
+	asn_DEF_vset_tags,
+	sizeof(asn_DEF_vset_tags)
+		/sizeof(asn_DEF_vset_tags[0]), /* 1 */
+	asn_DEF_vset_tags,	/* Same as above */
+	sizeof(asn_DEF_vset_tags)
+		/sizeof(asn_DEF_vset_tags[0]), /* 1 */
+	asn_MBR_vset,
 	1,	/* Single element */
-	&asn1_DEF_vset_specs	/* Additional specs */
+	&asn_DEF_vset_specs	/* Additional specs */
 };
 
-static asn1_TYPE_member_t asn1_MBR_vrange[] = {
+static asn_TYPE_member_t asn_MBR_vrange[] = {
 	{ ATF_NOFLAGS, 0, offsetof(struct vrange, from),
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (26 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_VisibleString,
+		.type = (void *)&asn_DEF_VisibleString,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "from"
 		},
 	{ ATF_NOFLAGS, 0, offsetof(struct vrange, to),
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (26 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_VisibleString,
+		.type = (void *)&asn_DEF_VisibleString,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "to"
 		},
 };
-static ber_tlv_tag_t asn1_DEF_vrange_tags[] = {
+static ber_tlv_tag_t asn_DEF_vrange_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn1_TYPE_tag2member_t asn1_DEF_vrange_tag2el[] = {
+static asn_TYPE_tag2member_t asn_DEF_vrange_tag2el[] = {
     { (ASN_TAG_CLASS_UNIVERSAL | (26 << 2)), 0, 0, 1 }, /* from at 45 */
     { (ASN_TAG_CLASS_UNIVERSAL | (26 << 2)), 1, -1, 0 }, /* to at 46 */
 };
-static asn1_SEQUENCE_specifics_t asn1_DEF_vrange_specs = {
+static asn_SEQUENCE_specifics_t asn_DEF_vrange_specs = {
 	sizeof(struct vrange),
-	offsetof(struct vrange, _ber_dec_ctx),
-	asn1_DEF_vrange_tag2el,
+	offsetof(struct vrange, _asn_ctx),
+	asn_DEF_vrange_tag2el,
 	2,	/* Count of tags in the map */
 	1,	/* Start extensions */
 	3	/* Stop extensions */
 };
 static /* Use -fall-defs-global to expose */
-asn1_TYPE_descriptor_t asn1_DEF_vrange = {
+asn_TYPE_descriptor_t asn_DEF_vrange = {
 	"vrange",
 	SEQUENCE_free,
 	SEQUENCE_print,
@@ -471,47 +471,47 @@
 	0,				/* Not implemented yet */
 	SEQUENCE_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_vrange_tags,
-	sizeof(asn1_DEF_vrange_tags)
-		/sizeof(asn1_DEF_vrange_tags[0]), /* 1 */
-	asn1_DEF_vrange_tags,	/* Same as above */
-	sizeof(asn1_DEF_vrange_tags)
-		/sizeof(asn1_DEF_vrange_tags[0]), /* 1 */
-	asn1_MBR_vrange,
+	asn_DEF_vrange_tags,
+	sizeof(asn_DEF_vrange_tags)
+		/sizeof(asn_DEF_vrange_tags[0]), /* 1 */
+	asn_DEF_vrange_tags,	/* Same as above */
+	sizeof(asn_DEF_vrange_tags)
+		/sizeof(asn_DEF_vrange_tags[0]), /* 1 */
+	asn_MBR_vrange,
 	2,	/* Elements count */
-	&asn1_DEF_vrange_specs	/* Additional specs */
+	&asn_DEF_vrange_specs	/* Additional specs */
 };
 
-static asn1_TYPE_member_t asn1_MBR_VariablePart[] = {
+static asn_TYPE_member_t asn_MBR_VariablePart[] = {
 	{ ATF_NOFLAGS, 0, offsetof(struct VariablePart, choice.vset),
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (17 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_vset,
+		.type = (void *)&asn_DEF_vset,
 		.memb_constraints = memb_vset_3_constraint,
 		.name = "vset"
 		},
 	{ ATF_NOFLAGS, 0, offsetof(struct VariablePart, choice.vrange),
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_vrange,
+		.type = (void *)&asn_DEF_vrange,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "vrange"
 		},
 };
-static asn1_TYPE_tag2member_t asn1_DEF_VariablePart_tag2el[] = {
+static asn_TYPE_tag2member_t asn_DEF_VariablePart_tag2el[] = {
     { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 }, /* vrange at 45 */
     { (ASN_TAG_CLASS_UNIVERSAL | (17 << 2)), 0, 0, 0 }, /* vset at 42 */
 };
-static asn1_CHOICE_specifics_t asn1_DEF_VariablePart_specs = {
+static asn_CHOICE_specifics_t asn_DEF_VariablePart_specs = {
 	sizeof(struct VariablePart),
-	offsetof(struct VariablePart, _ber_dec_ctx),
+	offsetof(struct VariablePart, _asn_ctx),
 	offsetof(struct VariablePart, present),
 	sizeof(((struct VariablePart *)0)->present),
-	asn1_DEF_VariablePart_tag2el,
+	asn_DEF_VariablePart_tag2el,
 	2,	/* Count of tags in the map */
 	1	/* Whether extensible */
 };
-asn1_TYPE_descriptor_t asn1_DEF_VariablePart = {
+asn_TYPE_descriptor_t asn_DEF_VariablePart = {
 	"VariablePart",
 	CHOICE_free,
 	CHOICE_print,
@@ -525,9 +525,9 @@
 	0,	/* No effective tags (count) */
 	0,	/* No tags (pointer) */
 	0,	/* No tags (count) */
-	asn1_MBR_VariablePart,
+	asn_MBR_VariablePart,
 	2,	/* Elements count */
-	&asn1_DEF_VariablePart_specs	/* Additional specs */
+	&asn_DEF_VariablePart_specs	/* Additional specs */
 };
 
 
@@ -550,7 +550,7 @@
 	 * Enumeration is extensible
 	 */
 } accept_as_e;
-extern asn1_TYPE_descriptor_t asn1_DEF_ActionItem;
+extern asn_TYPE_descriptor_t asn_DEF_ActionItem;
 
 /*** <<< TYPE-DECLS [ActionItem] >>> ***/
 
@@ -563,7 +563,7 @@
 			A_SET_OF(VisibleString_t) list;
 			
 			/* Context for parsing across buffer boundaries */
-			ber_dec_ctx_t _ber_dec_ctx;
+			asn_struct_ctx_t _asn_ctx;
 		} email;
 		/*
 		 * This type is extensible,
@@ -571,7 +571,7 @@
 		 */
 		
 		/* Context for parsing across buffer boundaries */
-		ber_dec_ctx_t _ber_dec_ctx;
+		asn_struct_ctx_t _asn_ctx;
 	} *notify;
 	/*
 	 * This type is extensible,
@@ -579,30 +579,30 @@
 	 */
 	
 	/* Context for parsing across buffer boundaries */
-	ber_dec_ctx_t _ber_dec_ctx;
+	asn_struct_ctx_t _asn_ctx;
 } ActionItem_t;
 
 /*** <<< STAT-DEFS [ActionItem] >>> ***/
 
-static asn1_TYPE_member_t asn1_MBR_email[] = {
+static asn_TYPE_member_t asn_MBR_email[] = {
 	{ ATF_NOFLAGS, 0, 0,
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (26 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_VisibleString,
+		.type = (void *)&asn_DEF_VisibleString,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = ""
 		},
 };
-static ber_tlv_tag_t asn1_DEF_email_tags[] = {
+static ber_tlv_tag_t asn_DEF_email_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (17 << 2))
 };
-static asn1_SET_OF_specifics_t asn1_DEF_email_specs = {
+static asn_SET_OF_specifics_t asn_DEF_email_specs = {
 	sizeof(struct email),
-	offsetof(struct email, _ber_dec_ctx),
+	offsetof(struct email, _asn_ctx),
 	0,	/* XER encoding is XMLDelimitedItemList */
 };
 static /* Use -fall-defs-global to expose */
-asn1_TYPE_descriptor_t asn1_DEF_email = {
+asn_TYPE_descriptor_t asn_DEF_email = {
 	"email",
 	SET_OF_free,
 	SET_OF_print,
@@ -612,50 +612,50 @@
 	0,				/* Not implemented yet */
 	SET_OF_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_email_tags,
-	sizeof(asn1_DEF_email_tags)
-		/sizeof(asn1_DEF_email_tags[0]), /* 1 */
-	asn1_DEF_email_tags,	/* Same as above */
-	sizeof(asn1_DEF_email_tags)
-		/sizeof(asn1_DEF_email_tags[0]), /* 1 */
-	asn1_MBR_email,
+	asn_DEF_email_tags,
+	sizeof(asn_DEF_email_tags)
+		/sizeof(asn_DEF_email_tags[0]), /* 1 */
+	asn_DEF_email_tags,	/* Same as above */
+	sizeof(asn_DEF_email_tags)
+		/sizeof(asn_DEF_email_tags[0]), /* 1 */
+	asn_MBR_email,
 	1,	/* Single element */
-	&asn1_DEF_email_specs	/* Additional specs */
+	&asn_DEF_email_specs	/* Additional specs */
 };
 
-static asn1_TYPE_member_t asn1_MBR_notify[] = {
+static asn_TYPE_member_t asn_MBR_notify[] = {
 	{ ATF_NOFLAGS, 0, offsetof(struct notify, critical),
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (1 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_BOOLEAN,
+		.type = (void *)&asn_DEF_BOOLEAN,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "critical"
 		},
 	{ ATF_NOFLAGS, 0, offsetof(struct notify, email),
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (17 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_email,
+		.type = (void *)&asn_DEF_email,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "email"
 		},
 };
-static ber_tlv_tag_t asn1_DEF_notify_tags[] = {
+static ber_tlv_tag_t asn_DEF_notify_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn1_TYPE_tag2member_t asn1_DEF_notify_tag2el[] = {
+static asn_TYPE_tag2member_t asn_DEF_notify_tag2el[] = {
     { (ASN_TAG_CLASS_UNIVERSAL | (1 << 2)), 0, 0, 0 }, /* critical at 61 */
     { (ASN_TAG_CLASS_UNIVERSAL | (17 << 2)), 1, 0, 0 }, /* email at 62 */
 };
-static asn1_SEQUENCE_specifics_t asn1_DEF_notify_specs = {
+static asn_SEQUENCE_specifics_t asn_DEF_notify_specs = {
 	sizeof(struct notify),
-	offsetof(struct notify, _ber_dec_ctx),
-	asn1_DEF_notify_tag2el,
+	offsetof(struct notify, _asn_ctx),
+	asn_DEF_notify_tag2el,
 	2,	/* Count of tags in the map */
 	1,	/* Start extensions */
 	3	/* Stop extensions */
 };
 static /* Use -fall-defs-global to expose */
-asn1_TYPE_descriptor_t asn1_DEF_notify = {
+asn_TYPE_descriptor_t asn_DEF_notify = {
 	"notify",
 	SEQUENCE_free,
 	SEQUENCE_print,
@@ -665,49 +665,49 @@
 	0,				/* Not implemented yet */
 	SEQUENCE_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_notify_tags,
-	sizeof(asn1_DEF_notify_tags)
-		/sizeof(asn1_DEF_notify_tags[0]), /* 1 */
-	asn1_DEF_notify_tags,	/* Same as above */
-	sizeof(asn1_DEF_notify_tags)
-		/sizeof(asn1_DEF_notify_tags[0]), /* 1 */
-	asn1_MBR_notify,
+	asn_DEF_notify_tags,
+	sizeof(asn_DEF_notify_tags)
+		/sizeof(asn_DEF_notify_tags[0]), /* 1 */
+	asn_DEF_notify_tags,	/* Same as above */
+	sizeof(asn_DEF_notify_tags)
+		/sizeof(asn_DEF_notify_tags[0]), /* 1 */
+	asn_MBR_notify,
 	2,	/* Elements count */
-	&asn1_DEF_notify_specs	/* Additional specs */
+	&asn_DEF_notify_specs	/* Additional specs */
 };
 
-static asn1_TYPE_member_t asn1_MBR_ActionItem[] = {
+static asn_TYPE_member_t asn_MBR_ActionItem[] = {
 	{ ATF_NOFLAGS, 0, offsetof(struct ActionItem, accept_as),
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_ENUMERATED,
+		.type = (void *)&asn_DEF_ENUMERATED,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "accept-as"
 		},
 	{ ATF_POINTER, 1, offsetof(struct ActionItem, notify),
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_notify,
+		.type = (void *)&asn_DEF_notify,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "notify"
 		},
 };
-static ber_tlv_tag_t asn1_DEF_ActionItem_tags[] = {
+static ber_tlv_tag_t asn_DEF_ActionItem_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn1_TYPE_tag2member_t asn1_DEF_ActionItem_tag2el[] = {
+static asn_TYPE_tag2member_t asn_DEF_ActionItem_tag2el[] = {
     { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 }, /* accept-as at 55 */
     { (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 }, /* notify at 61 */
 };
-static asn1_SEQUENCE_specifics_t asn1_DEF_ActionItem_specs = {
+static asn_SEQUENCE_specifics_t asn_DEF_ActionItem_specs = {
 	sizeof(struct ActionItem),
-	offsetof(struct ActionItem, _ber_dec_ctx),
-	asn1_DEF_ActionItem_tag2el,
+	offsetof(struct ActionItem, _asn_ctx),
+	asn_DEF_ActionItem_tag2el,
 	2,	/* Count of tags in the map */
 	1,	/* Start extensions */
 	3	/* Stop extensions */
 };
-asn1_TYPE_descriptor_t asn1_DEF_ActionItem = {
+asn_TYPE_descriptor_t asn_DEF_ActionItem = {
 	"ActionItem",
 	SEQUENCE_free,
 	SEQUENCE_print,
@@ -717,14 +717,14 @@
 	0,				/* Not implemented yet */
 	SEQUENCE_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_ActionItem_tags,
-	sizeof(asn1_DEF_ActionItem_tags)
-		/sizeof(asn1_DEF_ActionItem_tags[0]), /* 1 */
-	asn1_DEF_ActionItem_tags,	/* Same as above */
-	sizeof(asn1_DEF_ActionItem_tags)
-		/sizeof(asn1_DEF_ActionItem_tags[0]), /* 1 */
-	asn1_MBR_ActionItem,
+	asn_DEF_ActionItem_tags,
+	sizeof(asn_DEF_ActionItem_tags)
+		/sizeof(asn_DEF_ActionItem_tags[0]), /* 1 */
+	asn_DEF_ActionItem_tags,	/* Same as above */
+	sizeof(asn_DEF_ActionItem_tags)
+		/sizeof(asn_DEF_ActionItem_tags[0]), /* 1 */
+	asn_MBR_ActionItem,
 	2,	/* Elements count */
-	&asn1_DEF_ActionItem_specs	/* Additional specs */
+	&asn_DEF_ActionItem_specs	/* Additional specs */
 };
 
diff --git a/tests/44-choice-in-sequence-OK.asn1.-P b/tests/44-choice-in-sequence-OK.asn1.-P
index 09b999a..8b3106d 100644
--- a/tests/44-choice-in-sequence-OK.asn1.-P
+++ b/tests/44-choice-in-sequence-OK.asn1.-P
@@ -24,7 +24,7 @@
 	h_PR_i,
 	h_PR_j,
 } h_PR;
-extern asn1_TYPE_descriptor_t asn1_DEF_T;
+extern asn_TYPE_descriptor_t asn_DEF_T;
 
 /*** <<< TYPE-DECLS [T] >>> ***/
 
@@ -44,7 +44,7 @@
 				} choice;
 				
 				/* Context for parsing across buffer boundaries */
-				ber_dec_ctx_t _ber_dec_ctx;
+				asn_struct_ctx_t _asn_ctx;
 			} e;
 			struct h {
 				h_PR present;
@@ -54,51 +54,51 @@
 				} choice;
 				
 				/* Context for parsing across buffer boundaries */
-				ber_dec_ctx_t _ber_dec_ctx;
+				asn_struct_ctx_t _asn_ctx;
 			} h;
 		} choice;
 		
 		/* Context for parsing across buffer boundaries */
-		ber_dec_ctx_t _ber_dec_ctx;
+		asn_struct_ctx_t _asn_ctx;
 	} b;
 	
 	/* Context for parsing across buffer boundaries */
-	ber_dec_ctx_t _ber_dec_ctx;
+	asn_struct_ctx_t _asn_ctx;
 } T_t;
 
 /*** <<< STAT-DEFS [T] >>> ***/
 
-static asn1_TYPE_member_t asn1_MBR_e[] = {
+static asn_TYPE_member_t asn_MBR_e[] = {
 	{ ATF_NOFLAGS, 0, offsetof(struct e, choice.f),
 		.tag = (ASN_TAG_CLASS_PRIVATE | (7 << 2)),
 		.tag_mode = -1,	/* IMPLICIT tag at current level */
-		.type = (void *)&asn1_DEF_NULL,
+		.type = (void *)&asn_DEF_NULL,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "f"
 		},
 	{ ATF_NOFLAGS, 0, offsetof(struct e, choice.g),
 		.tag = (ASN_TAG_CLASS_PRIVATE | (8 << 2)),
 		.tag_mode = -1,	/* IMPLICIT tag at current level */
-		.type = (void *)&asn1_DEF_NULL,
+		.type = (void *)&asn_DEF_NULL,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "g"
 		},
 };
-static asn1_TYPE_tag2member_t asn1_DEF_e_tag2el[] = {
+static asn_TYPE_tag2member_t asn_DEF_e_tag2el[] = {
     { (ASN_TAG_CLASS_PRIVATE | (7 << 2)), 0, 0, 0 }, /* f at 20 */
     { (ASN_TAG_CLASS_PRIVATE | (8 << 2)), 1, 0, 0 }, /* g at 21 */
 };
-static asn1_CHOICE_specifics_t asn1_DEF_e_specs = {
+static asn_CHOICE_specifics_t asn_DEF_e_specs = {
 	sizeof(struct e),
-	offsetof(struct e, _ber_dec_ctx),
+	offsetof(struct e, _asn_ctx),
 	offsetof(struct e, present),
 	sizeof(((struct e *)0)->present),
-	asn1_DEF_e_tag2el,
+	asn_DEF_e_tag2el,
 	2,	/* Count of tags in the map */
 	0	/* Whether extensible */
 };
 static /* Use -fall-defs-global to expose */
-asn1_TYPE_descriptor_t asn1_DEF_e = {
+asn_TYPE_descriptor_t asn_DEF_e = {
 	"e",
 	CHOICE_free,
 	CHOICE_print,
@@ -112,42 +112,42 @@
 	0,	/* No effective tags (count) */
 	0,	/* No tags (pointer) */
 	0,	/* No tags (count) */
-	asn1_MBR_e,
+	asn_MBR_e,
 	2,	/* Elements count */
-	&asn1_DEF_e_specs	/* Additional specs */
+	&asn_DEF_e_specs	/* Additional specs */
 };
 
-static asn1_TYPE_member_t asn1_MBR_h[] = {
+static asn_TYPE_member_t asn_MBR_h[] = {
 	{ ATF_NOFLAGS, 0, offsetof(struct h, choice.i),
 		.tag = (ASN_TAG_CLASS_PRIVATE | (1 << 2)),
 		.tag_mode = -1,	/* IMPLICIT tag at current level */
-		.type = (void *)&asn1_DEF_NULL,
+		.type = (void *)&asn_DEF_NULL,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "i"
 		},
 	{ ATF_NOFLAGS, 0, offsetof(struct h, choice.j),
 		.tag = (ASN_TAG_CLASS_PRIVATE | (2 << 2)),
 		.tag_mode = -1,	/* IMPLICIT tag at current level */
-		.type = (void *)&asn1_DEF_NULL,
+		.type = (void *)&asn_DEF_NULL,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "j"
 		},
 };
-static asn1_TYPE_tag2member_t asn1_DEF_h_tag2el[] = {
+static asn_TYPE_tag2member_t asn_DEF_h_tag2el[] = {
     { (ASN_TAG_CLASS_PRIVATE | (1 << 2)), 0, 0, 0 }, /* i at 24 */
     { (ASN_TAG_CLASS_PRIVATE | (2 << 2)), 1, 0, 0 }, /* j at 25 */
 };
-static asn1_CHOICE_specifics_t asn1_DEF_h_specs = {
+static asn_CHOICE_specifics_t asn_DEF_h_specs = {
 	sizeof(struct h),
-	offsetof(struct h, _ber_dec_ctx),
+	offsetof(struct h, _asn_ctx),
 	offsetof(struct h, present),
 	sizeof(((struct h *)0)->present),
-	asn1_DEF_h_tag2el,
+	asn_DEF_h_tag2el,
 	2,	/* Count of tags in the map */
 	0	/* Whether extensible */
 };
 static /* Use -fall-defs-global to expose */
-asn1_TYPE_descriptor_t asn1_DEF_h = {
+asn_TYPE_descriptor_t asn_DEF_h = {
 	"h",
 	CHOICE_free,
 	CHOICE_print,
@@ -161,59 +161,59 @@
 	0,	/* No effective tags (count) */
 	0,	/* No tags (pointer) */
 	0,	/* No tags (count) */
-	asn1_MBR_h,
+	asn_MBR_h,
 	2,	/* Elements count */
-	&asn1_DEF_h_specs	/* Additional specs */
+	&asn_DEF_h_specs	/* Additional specs */
 };
 
-static asn1_TYPE_member_t asn1_MBR_b[] = {
+static asn_TYPE_member_t asn_MBR_b[] = {
 	{ ATF_NOFLAGS, 0, offsetof(struct b, choice.c),
 		.tag = (ASN_TAG_CLASS_PRIVATE | (5 << 2)),
 		.tag_mode = -1,	/* IMPLICIT tag at current level */
-		.type = (void *)&asn1_DEF_NULL,
+		.type = (void *)&asn_DEF_NULL,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "c"
 		},
 	{ ATF_NOFLAGS, 0, offsetof(struct b, choice.d),
 		.tag = (ASN_TAG_CLASS_PRIVATE | (6 << 2)),
 		.tag_mode = -1,	/* IMPLICIT tag at current level */
-		.type = (void *)&asn1_DEF_NULL,
+		.type = (void *)&asn_DEF_NULL,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "d"
 		},
 	{ ATF_NOFLAGS, 0, offsetof(struct b, choice.e),
 		.tag = -1 /* Ambiguous tag (CHOICE?) */,
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_e,
+		.type = (void *)&asn_DEF_e,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "e"
 		},
 	{ ATF_NOFLAGS, 0, offsetof(struct b, choice.h),
 		.tag = (ASN_TAG_CLASS_PRIVATE | (9 << 2)),
 		.tag_mode = +1,	/* EXPLICIT tag at current level */
-		.type = (void *)&asn1_DEF_h,
+		.type = (void *)&asn_DEF_h,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "h"
 		},
 };
-static asn1_TYPE_tag2member_t asn1_DEF_b_tag2el[] = {
+static asn_TYPE_tag2member_t asn_DEF_b_tag2el[] = {
     { (ASN_TAG_CLASS_PRIVATE | (5 << 2)), 0, 0, 0 }, /* c at 17 */
     { (ASN_TAG_CLASS_PRIVATE | (6 << 2)), 1, 0, 0 }, /* d at 18 */
     { (ASN_TAG_CLASS_PRIVATE | (7 << 2)), 2, 0, 0 }, /* f at 20 */
     { (ASN_TAG_CLASS_PRIVATE | (8 << 2)), 2, 0, 0 }, /* g at 21 */
     { (ASN_TAG_CLASS_PRIVATE | (9 << 2)), 3, 0, 0 }, /* h at 24 */
 };
-static asn1_CHOICE_specifics_t asn1_DEF_b_specs = {
+static asn_CHOICE_specifics_t asn_DEF_b_specs = {
 	sizeof(struct b),
-	offsetof(struct b, _ber_dec_ctx),
+	offsetof(struct b, _asn_ctx),
 	offsetof(struct b, present),
 	sizeof(((struct b *)0)->present),
-	asn1_DEF_b_tag2el,
+	asn_DEF_b_tag2el,
 	5,	/* Count of tags in the map */
 	0	/* Whether extensible */
 };
 static /* Use -fall-defs-global to expose */
-asn1_TYPE_descriptor_t asn1_DEF_b = {
+asn_TYPE_descriptor_t asn_DEF_b = {
 	"b",
 	CHOICE_free,
 	CHOICE_print,
@@ -227,32 +227,32 @@
 	0,	/* No effective tags (count) */
 	0,	/* No tags (pointer) */
 	0,	/* No tags (count) */
-	asn1_MBR_b,
+	asn_MBR_b,
 	4,	/* Elements count */
-	&asn1_DEF_b_specs	/* Additional specs */
+	&asn_DEF_b_specs	/* Additional specs */
 };
 
-static asn1_TYPE_member_t asn1_MBR_T[] = {
+static asn_TYPE_member_t asn_MBR_T[] = {
 	{ ATF_NOFLAGS, 0, offsetof(struct T, a),
 		.tag = (ASN_TAG_CLASS_PRIVATE | (2 << 2)),
 		.tag_mode = -1,	/* IMPLICIT tag at current level */
-		.type = (void *)&asn1_DEF_NULL,
+		.type = (void *)&asn_DEF_NULL,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "a"
 		},
 	{ ATF_NOFLAGS, 0, offsetof(struct T, b),
 		.tag = -1 /* Ambiguous tag (CHOICE?) */,
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_b,
+		.type = (void *)&asn_DEF_b,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "b"
 		},
 };
-static ber_tlv_tag_t asn1_DEF_T_tags[] = {
+static ber_tlv_tag_t asn_DEF_T_tags[] = {
 	(ASN_TAG_CLASS_PRIVATE | (1 << 2)),
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn1_TYPE_tag2member_t asn1_DEF_T_tag2el[] = {
+static asn_TYPE_tag2member_t asn_DEF_T_tag2el[] = {
     { (ASN_TAG_CLASS_PRIVATE | (2 << 2)), 0, 0, 0 }, /* a at 15 */
     { (ASN_TAG_CLASS_PRIVATE | (5 << 2)), 1, 0, 0 }, /* c at 17 */
     { (ASN_TAG_CLASS_PRIVATE | (6 << 2)), 1, 0, 0 }, /* d at 18 */
@@ -260,15 +260,15 @@
     { (ASN_TAG_CLASS_PRIVATE | (8 << 2)), 1, 0, 0 }, /* g at 21 */
     { (ASN_TAG_CLASS_PRIVATE | (9 << 2)), 1, 0, 0 }, /* h at 24 */
 };
-static asn1_SEQUENCE_specifics_t asn1_DEF_T_specs = {
+static asn_SEQUENCE_specifics_t asn_DEF_T_specs = {
 	sizeof(struct T),
-	offsetof(struct T, _ber_dec_ctx),
-	asn1_DEF_T_tag2el,
+	offsetof(struct T, _asn_ctx),
+	asn_DEF_T_tag2el,
 	6,	/* Count of tags in the map */
 	-1,	/* Start extensions */
 	-1	/* Stop extensions */
 };
-asn1_TYPE_descriptor_t asn1_DEF_T = {
+asn_TYPE_descriptor_t asn_DEF_T = {
 	"T",
 	SEQUENCE_free,
 	SEQUENCE_print,
@@ -278,14 +278,14 @@
 	0,				/* Not implemented yet */
 	SEQUENCE_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_T_tags,
-	sizeof(asn1_DEF_T_tags)
-		/sizeof(asn1_DEF_T_tags[0]) - 1, /* 1 */
-	asn1_DEF_T_tags,	/* Same as above */
-	sizeof(asn1_DEF_T_tags)
-		/sizeof(asn1_DEF_T_tags[0]), /* 2 */
-	asn1_MBR_T,
+	asn_DEF_T_tags,
+	sizeof(asn_DEF_T_tags)
+		/sizeof(asn_DEF_T_tags[0]) - 1, /* 1 */
+	asn_DEF_T_tags,	/* Same as above */
+	sizeof(asn_DEF_T_tags)
+		/sizeof(asn_DEF_T_tags[0]), /* 2 */
+	asn_MBR_T,
 	2,	/* Elements count */
-	&asn1_DEF_T_specs	/* Additional specs */
+	&asn_DEF_T_specs	/* Additional specs */
 };
 
diff --git a/tests/46-redefine-OK.asn1.-PR b/tests/46-redefine-OK.asn1.-PR
index 4981e22..92a81ca 100644
--- a/tests/46-redefine-OK.asn1.-PR
+++ b/tests/46-redefine-OK.asn1.-PR
@@ -11,7 +11,7 @@
 /*** <<< FUNC-DECLS [PrimitiveType] >>> ***/
 
 /* This type is equivalent to OCTET_STRING */
-#define	asn1_DEF_PrimitiveType	asn1_DEF_OCTET_STRING
+#define	asn_DEF_PrimitiveType	asn_DEF_OCTET_STRING
 
 /*** <<< CODE [PrimitiveType] >>> ***/
 
@@ -25,7 +25,7 @@
 
 /*** <<< DEPS [ConstructedType] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_ConstructedType;
+extern asn_TYPE_descriptor_t asn_DEF_ConstructedType;
 
 /*** <<< TYPE-DECLS [ConstructedType] >>> ***/
 
@@ -34,35 +34,35 @@
 	PrimitiveType_t	 field;
 	
 	/* Context for parsing across buffer boundaries */
-	ber_dec_ctx_t _ber_dec_ctx;
+	asn_struct_ctx_t _asn_ctx;
 } ConstructedType_t;
 
 /*** <<< STAT-DEFS [ConstructedType] >>> ***/
 
-static asn1_TYPE_member_t asn1_MBR_ConstructedType[] = {
+static asn_TYPE_member_t asn_MBR_ConstructedType[] = {
 	{ ATF_NOFLAGS, 0, offsetof(struct ConstructedType, field),
 		.tag = (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
 		.tag_mode = -1,	/* IMPLICIT tag at current level */
-		.type = (void *)&asn1_DEF_PrimitiveType,
+		.type = (void *)&asn_DEF_PrimitiveType,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "field"
 		},
 };
-static ber_tlv_tag_t asn1_DEF_ConstructedType_tags[] = {
+static ber_tlv_tag_t asn_DEF_ConstructedType_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn1_TYPE_tag2member_t asn1_DEF_ConstructedType_tag2el[] = {
+static asn_TYPE_tag2member_t asn_DEF_ConstructedType_tag2el[] = {
     { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 0, 0, 0 }, /* field at 18 */
 };
-static asn1_SEQUENCE_specifics_t asn1_DEF_ConstructedType_specs = {
+static asn_SEQUENCE_specifics_t asn_DEF_ConstructedType_specs = {
 	sizeof(struct ConstructedType),
-	offsetof(struct ConstructedType, _ber_dec_ctx),
-	asn1_DEF_ConstructedType_tag2el,
+	offsetof(struct ConstructedType, _asn_ctx),
+	asn_DEF_ConstructedType_tag2el,
 	1,	/* Count of tags in the map */
 	-1,	/* Start extensions */
 	-1	/* Stop extensions */
 };
-asn1_TYPE_descriptor_t asn1_DEF_ConstructedType = {
+asn_TYPE_descriptor_t asn_DEF_ConstructedType = {
 	"ConstructedType",
 	SEQUENCE_free,
 	SEQUENCE_print,
@@ -72,15 +72,15 @@
 	0,				/* Not implemented yet */
 	SEQUENCE_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_ConstructedType_tags,
-	sizeof(asn1_DEF_ConstructedType_tags)
-		/sizeof(asn1_DEF_ConstructedType_tags[0]), /* 1 */
-	asn1_DEF_ConstructedType_tags,	/* Same as above */
-	sizeof(asn1_DEF_ConstructedType_tags)
-		/sizeof(asn1_DEF_ConstructedType_tags[0]), /* 1 */
-	asn1_MBR_ConstructedType,
+	asn_DEF_ConstructedType_tags,
+	sizeof(asn_DEF_ConstructedType_tags)
+		/sizeof(asn_DEF_ConstructedType_tags[0]), /* 1 */
+	asn_DEF_ConstructedType_tags,	/* Same as above */
+	sizeof(asn_DEF_ConstructedType_tags)
+		/sizeof(asn_DEF_ConstructedType_tags[0]), /* 1 */
+	asn_MBR_ConstructedType,
 	1,	/* Elements count */
-	&asn1_DEF_ConstructedType_specs	/* Additional specs */
+	&asn_DEF_ConstructedType_specs	/* Additional specs */
 };
 
 
@@ -95,7 +95,7 @@
 
 /*** <<< FUNC-DECLS [T] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_T;
+extern asn_TYPE_descriptor_t asn_DEF_T;
 asn_struct_free_f T_free;
 asn_struct_print_f T_print;
 asn_constr_check_f T_constraint;
@@ -106,10 +106,10 @@
 /*** <<< CODE [T] >>> ***/
 
 int
-T_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+T_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	/* Replace with underlying type checker */
-	td->check_constraints = asn1_DEF_ConstructedType.check_constraints;
+	td->check_constraints = asn_DEF_ConstructedType.check_constraints;
 	return td->check_constraints(td, sptr, app_errlog, app_key);
 }
 
@@ -118,41 +118,41 @@
  * so here we adjust the DEF accordingly.
  */
 static void
-T_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
-	td->free_struct    = asn1_DEF_ConstructedType.free_struct;
-	td->print_struct   = asn1_DEF_ConstructedType.print_struct;
-	td->ber_decoder    = asn1_DEF_ConstructedType.ber_decoder;
-	td->der_encoder    = asn1_DEF_ConstructedType.der_encoder;
-	td->xer_decoder    = asn1_DEF_ConstructedType.xer_decoder;
-	td->xer_encoder    = asn1_DEF_ConstructedType.xer_encoder;
-	td->elements       = asn1_DEF_ConstructedType.elements;
-	td->elements_count = asn1_DEF_ConstructedType.elements_count;
-	td->specifics      = asn1_DEF_ConstructedType.specifics;
+T_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_ConstructedType.free_struct;
+	td->print_struct   = asn_DEF_ConstructedType.print_struct;
+	td->ber_decoder    = asn_DEF_ConstructedType.ber_decoder;
+	td->der_encoder    = asn_DEF_ConstructedType.der_encoder;
+	td->xer_decoder    = asn_DEF_ConstructedType.xer_decoder;
+	td->xer_encoder    = asn_DEF_ConstructedType.xer_encoder;
+	td->elements       = asn_DEF_ConstructedType.elements;
+	td->elements_count = asn_DEF_ConstructedType.elements_count;
+	td->specifics      = asn_DEF_ConstructedType.specifics;
 }
 
 void
-T_free(asn1_TYPE_descriptor_t *td,
+T_free(asn_TYPE_descriptor_t *td,
 		void *struct_ptr, int contents_only) {
 	T_inherit_TYPE_descriptor(td);
 	td->free_struct(td, struct_ptr, contents_only);
 }
 
 int
-T_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
+T_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
 		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
 	T_inherit_TYPE_descriptor(td);
 	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
 }
 
 ber_dec_rval_t
-T_decode_ber(asn1_TYPE_descriptor_t *td,
+T_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		void **structure, void *bufptr, size_t size, int tag_mode) {
 	T_inherit_TYPE_descriptor(td);
-	return td->ber_decoder(td, structure, bufptr, size, tag_mode);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
 }
 
 asn_enc_rval_t
-T_encode_der(asn1_TYPE_descriptor_t *td,
+T_encode_der(asn_TYPE_descriptor_t *td,
 		void *structure, int tag_mode, ber_tlv_tag_t tag,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	T_inherit_TYPE_descriptor(td);
@@ -160,7 +160,7 @@
 }
 
 asn_enc_rval_t
-T_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
+T_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
 		int ilevel, enum xer_encoder_flags_e flags,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	T_inherit_TYPE_descriptor(td);
@@ -170,11 +170,11 @@
 
 /*** <<< STAT-DEFS [T] >>> ***/
 
-static ber_tlv_tag_t asn1_DEF_T_tags[] = {
+static ber_tlv_tag_t asn_DEF_T_tags[] = {
 	(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-asn1_TYPE_descriptor_t asn1_DEF_T = {
+asn_TYPE_descriptor_t asn_DEF_T = {
 	"T",
 	T_free,
 	T_print,
@@ -184,12 +184,12 @@
 	0,				/* Not implemented yet */
 	T_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_T_tags,
-	sizeof(asn1_DEF_T_tags)
-		/sizeof(asn1_DEF_T_tags[0]) - 1, /* 1 */
-	asn1_DEF_T_tags,	/* Same as above */
-	sizeof(asn1_DEF_T_tags)
-		/sizeof(asn1_DEF_T_tags[0]), /* 2 */
+	asn_DEF_T_tags,
+	sizeof(asn_DEF_T_tags)
+		/sizeof(asn_DEF_T_tags[0]) - 1, /* 1 */
+	asn_DEF_T_tags,	/* Same as above */
+	sizeof(asn_DEF_T_tags)
+		/sizeof(asn_DEF_T_tags[0]), /* 2 */
 	0, 0,	/* Defined elsewhere */
 	0	/* No specifics */
 };
diff --git a/tests/47-set-ext-OK.asn1.-P b/tests/47-set-ext-OK.asn1.-P
index 0e207d5..568caad 100644
--- a/tests/47-set-ext-OK.asn1.-P
+++ b/tests/47-set-ext-OK.asn1.-P
@@ -13,7 +13,7 @@
 typedef enum T1_PR {
 	T1_PR_i,	/* Member i is present */
 } T1_PR;
-extern asn1_TYPE_descriptor_t asn1_DEF_T1;
+extern asn_TYPE_descriptor_t asn_DEF_T1;
 
 /*** <<< TYPE-DECLS [T1] >>> ***/
 
@@ -30,39 +30,39 @@
 		[((1+(8*sizeof(unsigned int))-1)/(8*sizeof(unsigned int)))];
 	
 	/* Context for parsing across buffer boundaries */
-	ber_dec_ctx_t _ber_dec_ctx;
+	asn_struct_ctx_t _asn_ctx;
 } T1_t;
 
 /*** <<< STAT-DEFS [T1] >>> ***/
 
-static asn1_TYPE_member_t asn1_MBR_T1[] = {
+static asn_TYPE_member_t asn_MBR_T1[] = {
 	{ ATF_NOFLAGS, 0, offsetof(struct T1, i),
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_INTEGER,
+		.type = (void *)&asn_DEF_INTEGER,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "i"
 		},
 };
-static ber_tlv_tag_t asn1_DEF_T1_tags[] = {
+static ber_tlv_tag_t asn_DEF_T1_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (17 << 2))
 };
-static asn1_TYPE_tag2member_t asn1_DEF_T1_tag2el[] = {
+static asn_TYPE_tag2member_t asn_DEF_T1_tag2el[] = {
     { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* i at 14 */
 };
-static uint8_t asn1_DEF_T1_mmap[(1 + (8 * sizeof(unsigned int)) - 1) / 8] = {
+static uint8_t asn_DEF_T1_mmap[(1 + (8 * sizeof(unsigned int)) - 1) / 8] = {
 	(1 << 7)
 };
-static asn1_SET_specifics_t asn1_DEF_T1_specs = {
+static asn_SET_specifics_t asn_DEF_T1_specs = {
 	sizeof(struct T1),
-	offsetof(struct T1, _ber_dec_ctx),
+	offsetof(struct T1, _asn_ctx),
 	offsetof(struct T1, _presence_map),
-	asn1_DEF_T1_tag2el,
+	asn_DEF_T1_tag2el,
 	1,	/* Count of tags in the map */
 	1,	/* Whether extensible */
-	(unsigned int *)asn1_DEF_T1_mmap	/* Mandatory elements map */
+	(unsigned int *)asn_DEF_T1_mmap	/* Mandatory elements map */
 };
-asn1_TYPE_descriptor_t asn1_DEF_T1 = {
+asn_TYPE_descriptor_t asn_DEF_T1 = {
 	"T1",
 	SET_free,
 	SET_print,
@@ -72,15 +72,15 @@
 	0,				/* Not implemented yet */
 	SET_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_T1_tags,
-	sizeof(asn1_DEF_T1_tags)
-		/sizeof(asn1_DEF_T1_tags[0]), /* 1 */
-	asn1_DEF_T1_tags,	/* Same as above */
-	sizeof(asn1_DEF_T1_tags)
-		/sizeof(asn1_DEF_T1_tags[0]), /* 1 */
-	asn1_MBR_T1,
+	asn_DEF_T1_tags,
+	sizeof(asn_DEF_T1_tags)
+		/sizeof(asn_DEF_T1_tags[0]), /* 1 */
+	asn_DEF_T1_tags,	/* Same as above */
+	sizeof(asn_DEF_T1_tags)
+		/sizeof(asn_DEF_T1_tags[0]), /* 1 */
+	asn_MBR_T1,
 	1,	/* Elements count */
-	&asn1_DEF_T1_specs	/* Additional specs */
+	&asn_DEF_T1_specs	/* Additional specs */
 };
 
 
@@ -98,7 +98,7 @@
 typedef enum T2_PR {
 	T2_PR_i,	/* Member i is present */
 } T2_PR;
-extern asn1_TYPE_descriptor_t asn1_DEF_T2;
+extern asn_TYPE_descriptor_t asn_DEF_T2;
 
 /*** <<< TYPE-DECLS [T2] >>> ***/
 
@@ -115,39 +115,39 @@
 		[((1+(8*sizeof(unsigned int))-1)/(8*sizeof(unsigned int)))];
 	
 	/* Context for parsing across buffer boundaries */
-	ber_dec_ctx_t _ber_dec_ctx;
+	asn_struct_ctx_t _asn_ctx;
 } T2_t;
 
 /*** <<< STAT-DEFS [T2] >>> ***/
 
-static asn1_TYPE_member_t asn1_MBR_T2[] = {
+static asn_TYPE_member_t asn_MBR_T2[] = {
 	{ ATF_NOFLAGS, 0, offsetof(struct T2, i),
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_INTEGER,
+		.type = (void *)&asn_DEF_INTEGER,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "i"
 		},
 };
-static ber_tlv_tag_t asn1_DEF_T2_tags[] = {
+static ber_tlv_tag_t asn_DEF_T2_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (17 << 2))
 };
-static asn1_TYPE_tag2member_t asn1_DEF_T2_tag2el[] = {
+static asn_TYPE_tag2member_t asn_DEF_T2_tag2el[] = {
     { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* i at 15 */
 };
-static uint8_t asn1_DEF_T2_mmap[(1 + (8 * sizeof(unsigned int)) - 1) / 8] = {
+static uint8_t asn_DEF_T2_mmap[(1 + (8 * sizeof(unsigned int)) - 1) / 8] = {
 	(1 << 7)
 };
-static asn1_SET_specifics_t asn1_DEF_T2_specs = {
+static asn_SET_specifics_t asn_DEF_T2_specs = {
 	sizeof(struct T2),
-	offsetof(struct T2, _ber_dec_ctx),
+	offsetof(struct T2, _asn_ctx),
 	offsetof(struct T2, _presence_map),
-	asn1_DEF_T2_tag2el,
+	asn_DEF_T2_tag2el,
 	1,	/* Count of tags in the map */
 	1,	/* Whether extensible */
-	(unsigned int *)asn1_DEF_T2_mmap	/* Mandatory elements map */
+	(unsigned int *)asn_DEF_T2_mmap	/* Mandatory elements map */
 };
-asn1_TYPE_descriptor_t asn1_DEF_T2 = {
+asn_TYPE_descriptor_t asn_DEF_T2 = {
 	"T2",
 	SET_free,
 	SET_print,
@@ -157,15 +157,15 @@
 	0,				/* Not implemented yet */
 	SET_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_T2_tags,
-	sizeof(asn1_DEF_T2_tags)
-		/sizeof(asn1_DEF_T2_tags[0]), /* 1 */
-	asn1_DEF_T2_tags,	/* Same as above */
-	sizeof(asn1_DEF_T2_tags)
-		/sizeof(asn1_DEF_T2_tags[0]), /* 1 */
-	asn1_MBR_T2,
+	asn_DEF_T2_tags,
+	sizeof(asn_DEF_T2_tags)
+		/sizeof(asn_DEF_T2_tags[0]), /* 1 */
+	asn_DEF_T2_tags,	/* Same as above */
+	sizeof(asn_DEF_T2_tags)
+		/sizeof(asn_DEF_T2_tags[0]), /* 1 */
+	asn_MBR_T2,
 	1,	/* Elements count */
-	&asn1_DEF_T2_specs	/* Additional specs */
+	&asn_DEF_T2_specs	/* Additional specs */
 };
 
 
@@ -181,7 +181,7 @@
 	T3_PR_i,
 	/* Extensions may appear below */
 } T3_PR;
-extern asn1_TYPE_descriptor_t asn1_DEF_T3;
+extern asn_TYPE_descriptor_t asn_DEF_T3;
 
 /*** <<< TYPE-DECLS [T3] >>> ***/
 
@@ -197,33 +197,33 @@
 	} choice;
 	
 	/* Context for parsing across buffer boundaries */
-	ber_dec_ctx_t _ber_dec_ctx;
+	asn_struct_ctx_t _asn_ctx;
 } T3_t;
 
 /*** <<< STAT-DEFS [T3] >>> ***/
 
-static asn1_TYPE_member_t asn1_MBR_T3[] = {
+static asn_TYPE_member_t asn_MBR_T3[] = {
 	{ ATF_NOFLAGS, 0, offsetof(struct T3, choice.i),
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_INTEGER,
+		.type = (void *)&asn_DEF_INTEGER,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "i"
 		},
 };
-static asn1_TYPE_tag2member_t asn1_DEF_T3_tag2el[] = {
+static asn_TYPE_tag2member_t asn_DEF_T3_tag2el[] = {
     { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* i at 16 */
 };
-static asn1_CHOICE_specifics_t asn1_DEF_T3_specs = {
+static asn_CHOICE_specifics_t asn_DEF_T3_specs = {
 	sizeof(struct T3),
-	offsetof(struct T3, _ber_dec_ctx),
+	offsetof(struct T3, _asn_ctx),
 	offsetof(struct T3, present),
 	sizeof(((struct T3 *)0)->present),
-	asn1_DEF_T3_tag2el,
+	asn_DEF_T3_tag2el,
 	1,	/* Count of tags in the map */
 	1	/* Whether extensible */
 };
-asn1_TYPE_descriptor_t asn1_DEF_T3 = {
+asn_TYPE_descriptor_t asn_DEF_T3 = {
 	"T3",
 	CHOICE_free,
 	CHOICE_print,
@@ -237,9 +237,9 @@
 	0,	/* No effective tags (count) */
 	0,	/* No tags (pointer) */
 	0,	/* No tags (count) */
-	asn1_MBR_T3,
+	asn_MBR_T3,
 	1,	/* Elements count */
-	&asn1_DEF_T3_specs	/* Additional specs */
+	&asn_DEF_T3_specs	/* Additional specs */
 };
 
 
@@ -255,7 +255,7 @@
 	T4_PR_i,
 	/* Extensions may appear below */
 } T4_PR;
-extern asn1_TYPE_descriptor_t asn1_DEF_T4;
+extern asn_TYPE_descriptor_t asn_DEF_T4;
 
 /*** <<< TYPE-DECLS [T4] >>> ***/
 
@@ -271,33 +271,33 @@
 	} choice;
 	
 	/* Context for parsing across buffer boundaries */
-	ber_dec_ctx_t _ber_dec_ctx;
+	asn_struct_ctx_t _asn_ctx;
 } T4_t;
 
 /*** <<< STAT-DEFS [T4] >>> ***/
 
-static asn1_TYPE_member_t asn1_MBR_T4[] = {
+static asn_TYPE_member_t asn_MBR_T4[] = {
 	{ ATF_NOFLAGS, 0, offsetof(struct T4, choice.i),
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_INTEGER,
+		.type = (void *)&asn_DEF_INTEGER,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "i"
 		},
 };
-static asn1_TYPE_tag2member_t asn1_DEF_T4_tag2el[] = {
+static asn_TYPE_tag2member_t asn_DEF_T4_tag2el[] = {
     { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* i at 17 */
 };
-static asn1_CHOICE_specifics_t asn1_DEF_T4_specs = {
+static asn_CHOICE_specifics_t asn_DEF_T4_specs = {
 	sizeof(struct T4),
-	offsetof(struct T4, _ber_dec_ctx),
+	offsetof(struct T4, _asn_ctx),
 	offsetof(struct T4, present),
 	sizeof(((struct T4 *)0)->present),
-	asn1_DEF_T4_tag2el,
+	asn_DEF_T4_tag2el,
 	1,	/* Count of tags in the map */
 	1	/* Whether extensible */
 };
-asn1_TYPE_descriptor_t asn1_DEF_T4 = {
+asn_TYPE_descriptor_t asn_DEF_T4 = {
 	"T4",
 	CHOICE_free,
 	CHOICE_print,
@@ -311,8 +311,8 @@
 	0,	/* No effective tags (count) */
 	0,	/* No tags (pointer) */
 	0,	/* No tags (count) */
-	asn1_MBR_T4,
+	asn_MBR_T4,
 	1,	/* Elements count */
-	&asn1_DEF_T4_specs	/* Additional specs */
+	&asn_DEF_T4_specs	/* Additional specs */
 };
 
diff --git a/tests/50-constraint-OK.asn1.-P b/tests/50-constraint-OK.asn1.-P
index 6696b56..b8c0c35 100644
--- a/tests/50-constraint-OK.asn1.-P
+++ b/tests/50-constraint-OK.asn1.-P
@@ -11,7 +11,7 @@
 /*** <<< FUNC-DECLS [Int1] >>> ***/
 
 /* This type is equivalent to INTEGER */
-#define	asn1_DEF_Int1	asn1_DEF_INTEGER
+#define	asn_DEF_Int1	asn_DEF_INTEGER
 
 /*** <<< CODE [Int1] >>> ***/
 
@@ -29,7 +29,7 @@
 
 /*** <<< FUNC-DECLS [Int2] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_Int2;
+extern asn_TYPE_descriptor_t asn_DEF_Int2;
 asn_struct_free_f Int2_free;
 asn_struct_print_f Int2_print;
 asn_constr_check_f Int2_constraint;
@@ -40,7 +40,7 @@
 /*** <<< CODE [Int2] >>> ***/
 
 int
-Int2_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+Int2_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	const Int1_t *st = sptr;
 	long value;
@@ -71,41 +71,41 @@
  * so here we adjust the DEF accordingly.
  */
 static void
-Int2_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
-	td->free_struct    = asn1_DEF_Int1.free_struct;
-	td->print_struct   = asn1_DEF_Int1.print_struct;
-	td->ber_decoder    = asn1_DEF_Int1.ber_decoder;
-	td->der_encoder    = asn1_DEF_Int1.der_encoder;
-	td->xer_decoder    = asn1_DEF_Int1.xer_decoder;
-	td->xer_encoder    = asn1_DEF_Int1.xer_encoder;
-	td->elements       = asn1_DEF_Int1.elements;
-	td->elements_count = asn1_DEF_Int1.elements_count;
-	td->specifics      = asn1_DEF_Int1.specifics;
+Int2_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_Int1.free_struct;
+	td->print_struct   = asn_DEF_Int1.print_struct;
+	td->ber_decoder    = asn_DEF_Int1.ber_decoder;
+	td->der_encoder    = asn_DEF_Int1.der_encoder;
+	td->xer_decoder    = asn_DEF_Int1.xer_decoder;
+	td->xer_encoder    = asn_DEF_Int1.xer_encoder;
+	td->elements       = asn_DEF_Int1.elements;
+	td->elements_count = asn_DEF_Int1.elements_count;
+	td->specifics      = asn_DEF_Int1.specifics;
 }
 
 void
-Int2_free(asn1_TYPE_descriptor_t *td,
+Int2_free(asn_TYPE_descriptor_t *td,
 		void *struct_ptr, int contents_only) {
 	Int2_inherit_TYPE_descriptor(td);
 	td->free_struct(td, struct_ptr, contents_only);
 }
 
 int
-Int2_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
+Int2_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
 		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
 	Int2_inherit_TYPE_descriptor(td);
 	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
 }
 
 ber_dec_rval_t
-Int2_decode_ber(asn1_TYPE_descriptor_t *td,
+Int2_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		void **structure, void *bufptr, size_t size, int tag_mode) {
 	Int2_inherit_TYPE_descriptor(td);
-	return td->ber_decoder(td, structure, bufptr, size, tag_mode);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
 }
 
 asn_enc_rval_t
-Int2_encode_der(asn1_TYPE_descriptor_t *td,
+Int2_encode_der(asn_TYPE_descriptor_t *td,
 		void *structure, int tag_mode, ber_tlv_tag_t tag,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	Int2_inherit_TYPE_descriptor(td);
@@ -113,7 +113,7 @@
 }
 
 asn_enc_rval_t
-Int2_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
+Int2_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
 		int ilevel, enum xer_encoder_flags_e flags,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	Int2_inherit_TYPE_descriptor(td);
@@ -123,10 +123,10 @@
 
 /*** <<< STAT-DEFS [Int2] >>> ***/
 
-static ber_tlv_tag_t asn1_DEF_Int2_tags[] = {
+static ber_tlv_tag_t asn_DEF_Int2_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
 };
-asn1_TYPE_descriptor_t asn1_DEF_Int2 = {
+asn_TYPE_descriptor_t asn_DEF_Int2 = {
 	"Int2",
 	Int2_free,
 	Int2_print,
@@ -136,12 +136,12 @@
 	0,				/* Not implemented yet */
 	Int2_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_Int2_tags,
-	sizeof(asn1_DEF_Int2_tags)
-		/sizeof(asn1_DEF_Int2_tags[0]), /* 1 */
-	asn1_DEF_Int2_tags,	/* Same as above */
-	sizeof(asn1_DEF_Int2_tags)
-		/sizeof(asn1_DEF_Int2_tags[0]), /* 1 */
+	asn_DEF_Int2_tags,
+	sizeof(asn_DEF_Int2_tags)
+		/sizeof(asn_DEF_Int2_tags[0]), /* 1 */
+	asn_DEF_Int2_tags,	/* Same as above */
+	sizeof(asn_DEF_Int2_tags)
+		/sizeof(asn_DEF_Int2_tags[0]), /* 1 */
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -158,7 +158,7 @@
 
 /*** <<< FUNC-DECLS [Int3] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_Int3;
+extern asn_TYPE_descriptor_t asn_DEF_Int3;
 asn_struct_free_f Int3_free;
 asn_struct_print_f Int3_print;
 asn_constr_check_f Int3_constraint;
@@ -169,7 +169,7 @@
 /*** <<< CODE [Int3] >>> ***/
 
 int
-Int3_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+Int3_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	const Int2_t *st = sptr;
 	long value;
@@ -181,7 +181,7 @@
 		return -1;
 	}
 	
-	if(asn1_INTEGER2long(st, &value)) {
+	if(asn_INTEGER2long(st, &value)) {
 		_ASN_ERRLOG(app_errlog, app_key,
 			"%s: value too large (%s:%d)",
 			td->name, __FILE__, __LINE__);
@@ -204,41 +204,41 @@
  * so here we adjust the DEF accordingly.
  */
 static void
-Int3_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
-	td->free_struct    = asn1_DEF_Int2.free_struct;
-	td->print_struct   = asn1_DEF_Int2.print_struct;
-	td->ber_decoder    = asn1_DEF_Int2.ber_decoder;
-	td->der_encoder    = asn1_DEF_Int2.der_encoder;
-	td->xer_decoder    = asn1_DEF_Int2.xer_decoder;
-	td->xer_encoder    = asn1_DEF_Int2.xer_encoder;
-	td->elements       = asn1_DEF_Int2.elements;
-	td->elements_count = asn1_DEF_Int2.elements_count;
-	td->specifics      = asn1_DEF_Int2.specifics;
+Int3_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_Int2.free_struct;
+	td->print_struct   = asn_DEF_Int2.print_struct;
+	td->ber_decoder    = asn_DEF_Int2.ber_decoder;
+	td->der_encoder    = asn_DEF_Int2.der_encoder;
+	td->xer_decoder    = asn_DEF_Int2.xer_decoder;
+	td->xer_encoder    = asn_DEF_Int2.xer_encoder;
+	td->elements       = asn_DEF_Int2.elements;
+	td->elements_count = asn_DEF_Int2.elements_count;
+	td->specifics      = asn_DEF_Int2.specifics;
 }
 
 void
-Int3_free(asn1_TYPE_descriptor_t *td,
+Int3_free(asn_TYPE_descriptor_t *td,
 		void *struct_ptr, int contents_only) {
 	Int3_inherit_TYPE_descriptor(td);
 	td->free_struct(td, struct_ptr, contents_only);
 }
 
 int
-Int3_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
+Int3_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
 		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
 	Int3_inherit_TYPE_descriptor(td);
 	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
 }
 
 ber_dec_rval_t
-Int3_decode_ber(asn1_TYPE_descriptor_t *td,
+Int3_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		void **structure, void *bufptr, size_t size, int tag_mode) {
 	Int3_inherit_TYPE_descriptor(td);
-	return td->ber_decoder(td, structure, bufptr, size, tag_mode);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
 }
 
 asn_enc_rval_t
-Int3_encode_der(asn1_TYPE_descriptor_t *td,
+Int3_encode_der(asn_TYPE_descriptor_t *td,
 		void *structure, int tag_mode, ber_tlv_tag_t tag,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	Int3_inherit_TYPE_descriptor(td);
@@ -246,7 +246,7 @@
 }
 
 asn_enc_rval_t
-Int3_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
+Int3_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
 		int ilevel, enum xer_encoder_flags_e flags,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	Int3_inherit_TYPE_descriptor(td);
@@ -256,10 +256,10 @@
 
 /*** <<< STAT-DEFS [Int3] >>> ***/
 
-static ber_tlv_tag_t asn1_DEF_Int3_tags[] = {
+static ber_tlv_tag_t asn_DEF_Int3_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
 };
-asn1_TYPE_descriptor_t asn1_DEF_Int3 = {
+asn_TYPE_descriptor_t asn_DEF_Int3 = {
 	"Int3",
 	Int3_free,
 	Int3_print,
@@ -269,12 +269,12 @@
 	0,				/* Not implemented yet */
 	Int3_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_Int3_tags,
-	sizeof(asn1_DEF_Int3_tags)
-		/sizeof(asn1_DEF_Int3_tags[0]), /* 1 */
-	asn1_DEF_Int3_tags,	/* Same as above */
-	sizeof(asn1_DEF_Int3_tags)
-		/sizeof(asn1_DEF_Int3_tags[0]), /* 1 */
+	asn_DEF_Int3_tags,
+	sizeof(asn_DEF_Int3_tags)
+		/sizeof(asn_DEF_Int3_tags[0]), /* 1 */
+	asn_DEF_Int3_tags,	/* Same as above */
+	sizeof(asn_DEF_Int3_tags)
+		/sizeof(asn_DEF_Int3_tags[0]), /* 1 */
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -291,7 +291,7 @@
 
 /*** <<< FUNC-DECLS [Int4] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_Int4;
+extern asn_TYPE_descriptor_t asn_DEF_Int4;
 asn_struct_free_f Int4_free;
 asn_struct_print_f Int4_print;
 asn_constr_check_f Int4_constraint;
@@ -302,7 +302,7 @@
 /*** <<< CODE [Int4] >>> ***/
 
 int
-Int4_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+Int4_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	const Int3_t *st = sptr;
 	long value;
@@ -314,7 +314,7 @@
 		return -1;
 	}
 	
-	if(asn1_INTEGER2long(st, &value)) {
+	if(asn_INTEGER2long(st, &value)) {
 		_ASN_ERRLOG(app_errlog, app_key,
 			"%s: value too large (%s:%d)",
 			td->name, __FILE__, __LINE__);
@@ -337,41 +337,41 @@
  * so here we adjust the DEF accordingly.
  */
 static void
-Int4_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
-	td->free_struct    = asn1_DEF_Int3.free_struct;
-	td->print_struct   = asn1_DEF_Int3.print_struct;
-	td->ber_decoder    = asn1_DEF_Int3.ber_decoder;
-	td->der_encoder    = asn1_DEF_Int3.der_encoder;
-	td->xer_decoder    = asn1_DEF_Int3.xer_decoder;
-	td->xer_encoder    = asn1_DEF_Int3.xer_encoder;
-	td->elements       = asn1_DEF_Int3.elements;
-	td->elements_count = asn1_DEF_Int3.elements_count;
-	td->specifics      = asn1_DEF_Int3.specifics;
+Int4_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_Int3.free_struct;
+	td->print_struct   = asn_DEF_Int3.print_struct;
+	td->ber_decoder    = asn_DEF_Int3.ber_decoder;
+	td->der_encoder    = asn_DEF_Int3.der_encoder;
+	td->xer_decoder    = asn_DEF_Int3.xer_decoder;
+	td->xer_encoder    = asn_DEF_Int3.xer_encoder;
+	td->elements       = asn_DEF_Int3.elements;
+	td->elements_count = asn_DEF_Int3.elements_count;
+	td->specifics      = asn_DEF_Int3.specifics;
 }
 
 void
-Int4_free(asn1_TYPE_descriptor_t *td,
+Int4_free(asn_TYPE_descriptor_t *td,
 		void *struct_ptr, int contents_only) {
 	Int4_inherit_TYPE_descriptor(td);
 	td->free_struct(td, struct_ptr, contents_only);
 }
 
 int
-Int4_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
+Int4_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
 		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
 	Int4_inherit_TYPE_descriptor(td);
 	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
 }
 
 ber_dec_rval_t
-Int4_decode_ber(asn1_TYPE_descriptor_t *td,
+Int4_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		void **structure, void *bufptr, size_t size, int tag_mode) {
 	Int4_inherit_TYPE_descriptor(td);
-	return td->ber_decoder(td, structure, bufptr, size, tag_mode);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
 }
 
 asn_enc_rval_t
-Int4_encode_der(asn1_TYPE_descriptor_t *td,
+Int4_encode_der(asn_TYPE_descriptor_t *td,
 		void *structure, int tag_mode, ber_tlv_tag_t tag,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	Int4_inherit_TYPE_descriptor(td);
@@ -379,7 +379,7 @@
 }
 
 asn_enc_rval_t
-Int4_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
+Int4_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
 		int ilevel, enum xer_encoder_flags_e flags,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	Int4_inherit_TYPE_descriptor(td);
@@ -389,10 +389,10 @@
 
 /*** <<< STAT-DEFS [Int4] >>> ***/
 
-static ber_tlv_tag_t asn1_DEF_Int4_tags[] = {
+static ber_tlv_tag_t asn_DEF_Int4_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
 };
-asn1_TYPE_descriptor_t asn1_DEF_Int4 = {
+asn_TYPE_descriptor_t asn_DEF_Int4 = {
 	"Int4",
 	Int4_free,
 	Int4_print,
@@ -402,12 +402,12 @@
 	0,				/* Not implemented yet */
 	Int4_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_Int4_tags,
-	sizeof(asn1_DEF_Int4_tags)
-		/sizeof(asn1_DEF_Int4_tags[0]), /* 1 */
-	asn1_DEF_Int4_tags,	/* Same as above */
-	sizeof(asn1_DEF_Int4_tags)
-		/sizeof(asn1_DEF_Int4_tags[0]), /* 1 */
+	asn_DEF_Int4_tags,
+	sizeof(asn_DEF_Int4_tags)
+		/sizeof(asn_DEF_Int4_tags[0]), /* 1 */
+	asn_DEF_Int4_tags,	/* Same as above */
+	sizeof(asn_DEF_Int4_tags)
+		/sizeof(asn_DEF_Int4_tags[0]), /* 1 */
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -424,7 +424,7 @@
 
 /*** <<< FUNC-DECLS [Int5] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_Int5;
+extern asn_TYPE_descriptor_t asn_DEF_Int5;
 asn_struct_free_f Int5_free;
 asn_struct_print_f Int5_print;
 asn_constr_check_f Int5_constraint;
@@ -435,7 +435,7 @@
 /*** <<< CODE [Int5] >>> ***/
 
 int
-Int5_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+Int5_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	const Int4_t *st = sptr;
 	long value;
@@ -447,7 +447,7 @@
 		return -1;
 	}
 	
-	if(asn1_INTEGER2long(st, &value)) {
+	if(asn_INTEGER2long(st, &value)) {
 		_ASN_ERRLOG(app_errlog, app_key,
 			"%s: value too large (%s:%d)",
 			td->name, __FILE__, __LINE__);
@@ -470,41 +470,41 @@
  * so here we adjust the DEF accordingly.
  */
 static void
-Int5_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
-	td->free_struct    = asn1_DEF_Int4.free_struct;
-	td->print_struct   = asn1_DEF_Int4.print_struct;
-	td->ber_decoder    = asn1_DEF_Int4.ber_decoder;
-	td->der_encoder    = asn1_DEF_Int4.der_encoder;
-	td->xer_decoder    = asn1_DEF_Int4.xer_decoder;
-	td->xer_encoder    = asn1_DEF_Int4.xer_encoder;
-	td->elements       = asn1_DEF_Int4.elements;
-	td->elements_count = asn1_DEF_Int4.elements_count;
-	td->specifics      = asn1_DEF_Int4.specifics;
+Int5_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_Int4.free_struct;
+	td->print_struct   = asn_DEF_Int4.print_struct;
+	td->ber_decoder    = asn_DEF_Int4.ber_decoder;
+	td->der_encoder    = asn_DEF_Int4.der_encoder;
+	td->xer_decoder    = asn_DEF_Int4.xer_decoder;
+	td->xer_encoder    = asn_DEF_Int4.xer_encoder;
+	td->elements       = asn_DEF_Int4.elements;
+	td->elements_count = asn_DEF_Int4.elements_count;
+	td->specifics      = asn_DEF_Int4.specifics;
 }
 
 void
-Int5_free(asn1_TYPE_descriptor_t *td,
+Int5_free(asn_TYPE_descriptor_t *td,
 		void *struct_ptr, int contents_only) {
 	Int5_inherit_TYPE_descriptor(td);
 	td->free_struct(td, struct_ptr, contents_only);
 }
 
 int
-Int5_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
+Int5_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
 		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
 	Int5_inherit_TYPE_descriptor(td);
 	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
 }
 
 ber_dec_rval_t
-Int5_decode_ber(asn1_TYPE_descriptor_t *td,
+Int5_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		void **structure, void *bufptr, size_t size, int tag_mode) {
 	Int5_inherit_TYPE_descriptor(td);
-	return td->ber_decoder(td, structure, bufptr, size, tag_mode);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
 }
 
 asn_enc_rval_t
-Int5_encode_der(asn1_TYPE_descriptor_t *td,
+Int5_encode_der(asn_TYPE_descriptor_t *td,
 		void *structure, int tag_mode, ber_tlv_tag_t tag,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	Int5_inherit_TYPE_descriptor(td);
@@ -512,7 +512,7 @@
 }
 
 asn_enc_rval_t
-Int5_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
+Int5_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
 		int ilevel, enum xer_encoder_flags_e flags,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	Int5_inherit_TYPE_descriptor(td);
@@ -522,10 +522,10 @@
 
 /*** <<< STAT-DEFS [Int5] >>> ***/
 
-static ber_tlv_tag_t asn1_DEF_Int5_tags[] = {
+static ber_tlv_tag_t asn_DEF_Int5_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
 };
-asn1_TYPE_descriptor_t asn1_DEF_Int5 = {
+asn_TYPE_descriptor_t asn_DEF_Int5 = {
 	"Int5",
 	Int5_free,
 	Int5_print,
@@ -535,12 +535,12 @@
 	0,				/* Not implemented yet */
 	Int5_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_Int5_tags,
-	sizeof(asn1_DEF_Int5_tags)
-		/sizeof(asn1_DEF_Int5_tags[0]), /* 1 */
-	asn1_DEF_Int5_tags,	/* Same as above */
-	sizeof(asn1_DEF_Int5_tags)
-		/sizeof(asn1_DEF_Int5_tags[0]), /* 1 */
+	asn_DEF_Int5_tags,
+	sizeof(asn_DEF_Int5_tags)
+		/sizeof(asn_DEF_Int5_tags[0]), /* 1 */
+	asn_DEF_Int5_tags,	/* Same as above */
+	sizeof(asn_DEF_Int5_tags)
+		/sizeof(asn_DEF_Int5_tags[0]), /* 1 */
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -557,7 +557,7 @@
 
 /*** <<< FUNC-DECLS [ExtensibleExtensions] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_ExtensibleExtensions;
+extern asn_TYPE_descriptor_t asn_DEF_ExtensibleExtensions;
 asn_struct_free_f ExtensibleExtensions_free;
 asn_struct_print_f ExtensibleExtensions_print;
 asn_constr_check_f ExtensibleExtensions_constraint;
@@ -568,7 +568,7 @@
 /*** <<< CODE [ExtensibleExtensions] >>> ***/
 
 int
-ExtensibleExtensions_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+ExtensibleExtensions_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	const INTEGER_t *st = sptr;
 	long value;
@@ -580,7 +580,7 @@
 		return -1;
 	}
 	
-	if(asn1_INTEGER2long(st, &value)) {
+	if(asn_INTEGER2long(st, &value)) {
 		_ASN_ERRLOG(app_errlog, app_key,
 			"%s: value too large (%s:%d)",
 			td->name, __FILE__, __LINE__);
@@ -603,41 +603,41 @@
  * so here we adjust the DEF accordingly.
  */
 static void
-ExtensibleExtensions_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
-	td->free_struct    = asn1_DEF_INTEGER.free_struct;
-	td->print_struct   = asn1_DEF_INTEGER.print_struct;
-	td->ber_decoder    = asn1_DEF_INTEGER.ber_decoder;
-	td->der_encoder    = asn1_DEF_INTEGER.der_encoder;
-	td->xer_decoder    = asn1_DEF_INTEGER.xer_decoder;
-	td->xer_encoder    = asn1_DEF_INTEGER.xer_encoder;
-	td->elements       = asn1_DEF_INTEGER.elements;
-	td->elements_count = asn1_DEF_INTEGER.elements_count;
-	td->specifics      = asn1_DEF_INTEGER.specifics;
+ExtensibleExtensions_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_INTEGER.free_struct;
+	td->print_struct   = asn_DEF_INTEGER.print_struct;
+	td->ber_decoder    = asn_DEF_INTEGER.ber_decoder;
+	td->der_encoder    = asn_DEF_INTEGER.der_encoder;
+	td->xer_decoder    = asn_DEF_INTEGER.xer_decoder;
+	td->xer_encoder    = asn_DEF_INTEGER.xer_encoder;
+	td->elements       = asn_DEF_INTEGER.elements;
+	td->elements_count = asn_DEF_INTEGER.elements_count;
+	td->specifics      = asn_DEF_INTEGER.specifics;
 }
 
 void
-ExtensibleExtensions_free(asn1_TYPE_descriptor_t *td,
+ExtensibleExtensions_free(asn_TYPE_descriptor_t *td,
 		void *struct_ptr, int contents_only) {
 	ExtensibleExtensions_inherit_TYPE_descriptor(td);
 	td->free_struct(td, struct_ptr, contents_only);
 }
 
 int
-ExtensibleExtensions_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
+ExtensibleExtensions_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
 		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
 	ExtensibleExtensions_inherit_TYPE_descriptor(td);
 	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
 }
 
 ber_dec_rval_t
-ExtensibleExtensions_decode_ber(asn1_TYPE_descriptor_t *td,
+ExtensibleExtensions_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		void **structure, void *bufptr, size_t size, int tag_mode) {
 	ExtensibleExtensions_inherit_TYPE_descriptor(td);
-	return td->ber_decoder(td, structure, bufptr, size, tag_mode);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
 }
 
 asn_enc_rval_t
-ExtensibleExtensions_encode_der(asn1_TYPE_descriptor_t *td,
+ExtensibleExtensions_encode_der(asn_TYPE_descriptor_t *td,
 		void *structure, int tag_mode, ber_tlv_tag_t tag,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	ExtensibleExtensions_inherit_TYPE_descriptor(td);
@@ -645,7 +645,7 @@
 }
 
 asn_enc_rval_t
-ExtensibleExtensions_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
+ExtensibleExtensions_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
 		int ilevel, enum xer_encoder_flags_e flags,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	ExtensibleExtensions_inherit_TYPE_descriptor(td);
@@ -655,10 +655,10 @@
 
 /*** <<< STAT-DEFS [ExtensibleExtensions] >>> ***/
 
-static ber_tlv_tag_t asn1_DEF_ExtensibleExtensions_tags[] = {
+static ber_tlv_tag_t asn_DEF_ExtensibleExtensions_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
 };
-asn1_TYPE_descriptor_t asn1_DEF_ExtensibleExtensions = {
+asn_TYPE_descriptor_t asn_DEF_ExtensibleExtensions = {
 	"ExtensibleExtensions",
 	ExtensibleExtensions_free,
 	ExtensibleExtensions_print,
@@ -668,12 +668,12 @@
 	0,				/* Not implemented yet */
 	ExtensibleExtensions_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_ExtensibleExtensions_tags,
-	sizeof(asn1_DEF_ExtensibleExtensions_tags)
-		/sizeof(asn1_DEF_ExtensibleExtensions_tags[0]), /* 1 */
-	asn1_DEF_ExtensibleExtensions_tags,	/* Same as above */
-	sizeof(asn1_DEF_ExtensibleExtensions_tags)
-		/sizeof(asn1_DEF_ExtensibleExtensions_tags[0]), /* 1 */
+	asn_DEF_ExtensibleExtensions_tags,
+	sizeof(asn_DEF_ExtensibleExtensions_tags)
+		/sizeof(asn_DEF_ExtensibleExtensions_tags[0]), /* 1 */
+	asn_DEF_ExtensibleExtensions_tags,	/* Same as above */
+	sizeof(asn_DEF_ExtensibleExtensions_tags)
+		/sizeof(asn_DEF_ExtensibleExtensions_tags[0]), /* 1 */
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -691,7 +691,7 @@
 /*** <<< FUNC-DECLS [Str1] >>> ***/
 
 /* This type is equivalent to IA5String */
-#define	asn1_DEF_Str1	asn1_DEF_IA5String
+#define	asn_DEF_Str1	asn_DEF_IA5String
 
 /*** <<< CODE [Str1] >>> ***/
 
@@ -709,7 +709,7 @@
 
 /*** <<< FUNC-DECLS [Str2] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_Str2;
+extern asn_TYPE_descriptor_t asn_DEF_Str2;
 asn_struct_free_f Str2_free;
 asn_struct_print_f Str2_print;
 asn_constr_check_f Str2_constraint;
@@ -736,7 +736,7 @@
 /*** <<< CODE [Str2] >>> ***/
 
 int
-Str2_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+Str2_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	const Str1_t *st = sptr;
 	size_t size;
@@ -767,41 +767,41 @@
  * so here we adjust the DEF accordingly.
  */
 static void
-Str2_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
-	td->free_struct    = asn1_DEF_Str1.free_struct;
-	td->print_struct   = asn1_DEF_Str1.print_struct;
-	td->ber_decoder    = asn1_DEF_Str1.ber_decoder;
-	td->der_encoder    = asn1_DEF_Str1.der_encoder;
-	td->xer_decoder    = asn1_DEF_Str1.xer_decoder;
-	td->xer_encoder    = asn1_DEF_Str1.xer_encoder;
-	td->elements       = asn1_DEF_Str1.elements;
-	td->elements_count = asn1_DEF_Str1.elements_count;
-	td->specifics      = asn1_DEF_Str1.specifics;
+Str2_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_Str1.free_struct;
+	td->print_struct   = asn_DEF_Str1.print_struct;
+	td->ber_decoder    = asn_DEF_Str1.ber_decoder;
+	td->der_encoder    = asn_DEF_Str1.der_encoder;
+	td->xer_decoder    = asn_DEF_Str1.xer_decoder;
+	td->xer_encoder    = asn_DEF_Str1.xer_encoder;
+	td->elements       = asn_DEF_Str1.elements;
+	td->elements_count = asn_DEF_Str1.elements_count;
+	td->specifics      = asn_DEF_Str1.specifics;
 }
 
 void
-Str2_free(asn1_TYPE_descriptor_t *td,
+Str2_free(asn_TYPE_descriptor_t *td,
 		void *struct_ptr, int contents_only) {
 	Str2_inherit_TYPE_descriptor(td);
 	td->free_struct(td, struct_ptr, contents_only);
 }
 
 int
-Str2_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
+Str2_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
 		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
 	Str2_inherit_TYPE_descriptor(td);
 	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
 }
 
 ber_dec_rval_t
-Str2_decode_ber(asn1_TYPE_descriptor_t *td,
+Str2_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		void **structure, void *bufptr, size_t size, int tag_mode) {
 	Str2_inherit_TYPE_descriptor(td);
-	return td->ber_decoder(td, structure, bufptr, size, tag_mode);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
 }
 
 asn_enc_rval_t
-Str2_encode_der(asn1_TYPE_descriptor_t *td,
+Str2_encode_der(asn_TYPE_descriptor_t *td,
 		void *structure, int tag_mode, ber_tlv_tag_t tag,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	Str2_inherit_TYPE_descriptor(td);
@@ -809,7 +809,7 @@
 }
 
 asn_enc_rval_t
-Str2_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
+Str2_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
 		int ilevel, enum xer_encoder_flags_e flags,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	Str2_inherit_TYPE_descriptor(td);
@@ -819,10 +819,10 @@
 
 /*** <<< STAT-DEFS [Str2] >>> ***/
 
-static ber_tlv_tag_t asn1_DEF_Str2_tags[] = {
+static ber_tlv_tag_t asn_DEF_Str2_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (22 << 2))
 };
-asn1_TYPE_descriptor_t asn1_DEF_Str2 = {
+asn_TYPE_descriptor_t asn_DEF_Str2 = {
 	"Str2",
 	Str2_free,
 	Str2_print,
@@ -832,12 +832,12 @@
 	0,				/* Not implemented yet */
 	Str2_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_Str2_tags,
-	sizeof(asn1_DEF_Str2_tags)
-		/sizeof(asn1_DEF_Str2_tags[0]), /* 1 */
-	asn1_DEF_Str2_tags,	/* Same as above */
-	sizeof(asn1_DEF_Str2_tags)
-		/sizeof(asn1_DEF_Str2_tags[0]), /* 1 */
+	asn_DEF_Str2_tags,
+	sizeof(asn_DEF_Str2_tags)
+		/sizeof(asn_DEF_Str2_tags[0]), /* 1 */
+	asn_DEF_Str2_tags,	/* Same as above */
+	sizeof(asn_DEF_Str2_tags)
+		/sizeof(asn_DEF_Str2_tags[0]), /* 1 */
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -854,7 +854,7 @@
 
 /*** <<< FUNC-DECLS [Str3] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_Str3;
+extern asn_TYPE_descriptor_t asn_DEF_Str3;
 asn_struct_free_f Str3_free;
 asn_struct_print_f Str3_print;
 asn_constr_check_f Str3_constraint;
@@ -892,7 +892,7 @@
 /*** <<< CODE [Str3] >>> ***/
 
 int
-Str3_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+Str3_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	const Str2_t *st = sptr;
 	size_t size;
@@ -923,41 +923,41 @@
  * so here we adjust the DEF accordingly.
  */
 static void
-Str3_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
-	td->free_struct    = asn1_DEF_Str2.free_struct;
-	td->print_struct   = asn1_DEF_Str2.print_struct;
-	td->ber_decoder    = asn1_DEF_Str2.ber_decoder;
-	td->der_encoder    = asn1_DEF_Str2.der_encoder;
-	td->xer_decoder    = asn1_DEF_Str2.xer_decoder;
-	td->xer_encoder    = asn1_DEF_Str2.xer_encoder;
-	td->elements       = asn1_DEF_Str2.elements;
-	td->elements_count = asn1_DEF_Str2.elements_count;
-	td->specifics      = asn1_DEF_Str2.specifics;
+Str3_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_Str2.free_struct;
+	td->print_struct   = asn_DEF_Str2.print_struct;
+	td->ber_decoder    = asn_DEF_Str2.ber_decoder;
+	td->der_encoder    = asn_DEF_Str2.der_encoder;
+	td->xer_decoder    = asn_DEF_Str2.xer_decoder;
+	td->xer_encoder    = asn_DEF_Str2.xer_encoder;
+	td->elements       = asn_DEF_Str2.elements;
+	td->elements_count = asn_DEF_Str2.elements_count;
+	td->specifics      = asn_DEF_Str2.specifics;
 }
 
 void
-Str3_free(asn1_TYPE_descriptor_t *td,
+Str3_free(asn_TYPE_descriptor_t *td,
 		void *struct_ptr, int contents_only) {
 	Str3_inherit_TYPE_descriptor(td);
 	td->free_struct(td, struct_ptr, contents_only);
 }
 
 int
-Str3_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
+Str3_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
 		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
 	Str3_inherit_TYPE_descriptor(td);
 	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
 }
 
 ber_dec_rval_t
-Str3_decode_ber(asn1_TYPE_descriptor_t *td,
+Str3_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		void **structure, void *bufptr, size_t size, int tag_mode) {
 	Str3_inherit_TYPE_descriptor(td);
-	return td->ber_decoder(td, structure, bufptr, size, tag_mode);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
 }
 
 asn_enc_rval_t
-Str3_encode_der(asn1_TYPE_descriptor_t *td,
+Str3_encode_der(asn_TYPE_descriptor_t *td,
 		void *structure, int tag_mode, ber_tlv_tag_t tag,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	Str3_inherit_TYPE_descriptor(td);
@@ -965,7 +965,7 @@
 }
 
 asn_enc_rval_t
-Str3_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
+Str3_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
 		int ilevel, enum xer_encoder_flags_e flags,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	Str3_inherit_TYPE_descriptor(td);
@@ -975,10 +975,10 @@
 
 /*** <<< STAT-DEFS [Str3] >>> ***/
 
-static ber_tlv_tag_t asn1_DEF_Str3_tags[] = {
+static ber_tlv_tag_t asn_DEF_Str3_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (22 << 2))
 };
-asn1_TYPE_descriptor_t asn1_DEF_Str3 = {
+asn_TYPE_descriptor_t asn_DEF_Str3 = {
 	"Str3",
 	Str3_free,
 	Str3_print,
@@ -988,12 +988,12 @@
 	0,				/* Not implemented yet */
 	Str3_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_Str3_tags,
-	sizeof(asn1_DEF_Str3_tags)
-		/sizeof(asn1_DEF_Str3_tags[0]), /* 1 */
-	asn1_DEF_Str3_tags,	/* Same as above */
-	sizeof(asn1_DEF_Str3_tags)
-		/sizeof(asn1_DEF_Str3_tags[0]), /* 1 */
+	asn_DEF_Str3_tags,
+	sizeof(asn_DEF_Str3_tags)
+		/sizeof(asn_DEF_Str3_tags[0]), /* 1 */
+	asn_DEF_Str3_tags,	/* Same as above */
+	sizeof(asn_DEF_Str3_tags)
+		/sizeof(asn_DEF_Str3_tags[0]), /* 1 */
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -1010,7 +1010,7 @@
 
 /*** <<< FUNC-DECLS [Str4] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_Str4;
+extern asn_TYPE_descriptor_t asn_DEF_Str4;
 asn_struct_free_f Str4_free;
 asn_struct_print_f Str4_print;
 asn_constr_check_f Str4_constraint;
@@ -1037,7 +1037,7 @@
 /*** <<< CODE [Str4] >>> ***/
 
 int
-Str4_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+Str4_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	const IA5String_t *st = sptr;
 	
@@ -1065,41 +1065,41 @@
  * so here we adjust the DEF accordingly.
  */
 static void
-Str4_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
-	td->free_struct    = asn1_DEF_IA5String.free_struct;
-	td->print_struct   = asn1_DEF_IA5String.print_struct;
-	td->ber_decoder    = asn1_DEF_IA5String.ber_decoder;
-	td->der_encoder    = asn1_DEF_IA5String.der_encoder;
-	td->xer_decoder    = asn1_DEF_IA5String.xer_decoder;
-	td->xer_encoder    = asn1_DEF_IA5String.xer_encoder;
-	td->elements       = asn1_DEF_IA5String.elements;
-	td->elements_count = asn1_DEF_IA5String.elements_count;
-	td->specifics      = asn1_DEF_IA5String.specifics;
+Str4_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_IA5String.free_struct;
+	td->print_struct   = asn_DEF_IA5String.print_struct;
+	td->ber_decoder    = asn_DEF_IA5String.ber_decoder;
+	td->der_encoder    = asn_DEF_IA5String.der_encoder;
+	td->xer_decoder    = asn_DEF_IA5String.xer_decoder;
+	td->xer_encoder    = asn_DEF_IA5String.xer_encoder;
+	td->elements       = asn_DEF_IA5String.elements;
+	td->elements_count = asn_DEF_IA5String.elements_count;
+	td->specifics      = asn_DEF_IA5String.specifics;
 }
 
 void
-Str4_free(asn1_TYPE_descriptor_t *td,
+Str4_free(asn_TYPE_descriptor_t *td,
 		void *struct_ptr, int contents_only) {
 	Str4_inherit_TYPE_descriptor(td);
 	td->free_struct(td, struct_ptr, contents_only);
 }
 
 int
-Str4_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
+Str4_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
 		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
 	Str4_inherit_TYPE_descriptor(td);
 	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
 }
 
 ber_dec_rval_t
-Str4_decode_ber(asn1_TYPE_descriptor_t *td,
+Str4_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		void **structure, void *bufptr, size_t size, int tag_mode) {
 	Str4_inherit_TYPE_descriptor(td);
-	return td->ber_decoder(td, structure, bufptr, size, tag_mode);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
 }
 
 asn_enc_rval_t
-Str4_encode_der(asn1_TYPE_descriptor_t *td,
+Str4_encode_der(asn_TYPE_descriptor_t *td,
 		void *structure, int tag_mode, ber_tlv_tag_t tag,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	Str4_inherit_TYPE_descriptor(td);
@@ -1107,7 +1107,7 @@
 }
 
 asn_enc_rval_t
-Str4_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
+Str4_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
 		int ilevel, enum xer_encoder_flags_e flags,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	Str4_inherit_TYPE_descriptor(td);
@@ -1117,10 +1117,10 @@
 
 /*** <<< STAT-DEFS [Str4] >>> ***/
 
-static ber_tlv_tag_t asn1_DEF_Str4_tags[] = {
+static ber_tlv_tag_t asn_DEF_Str4_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (22 << 2))
 };
-asn1_TYPE_descriptor_t asn1_DEF_Str4 = {
+asn_TYPE_descriptor_t asn_DEF_Str4 = {
 	"Str4",
 	Str4_free,
 	Str4_print,
@@ -1130,12 +1130,12 @@
 	0,				/* Not implemented yet */
 	Str4_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_Str4_tags,
-	sizeof(asn1_DEF_Str4_tags)
-		/sizeof(asn1_DEF_Str4_tags[0]), /* 1 */
-	asn1_DEF_Str4_tags,	/* Same as above */
-	sizeof(asn1_DEF_Str4_tags)
-		/sizeof(asn1_DEF_Str4_tags[0]), /* 1 */
+	asn_DEF_Str4_tags,
+	sizeof(asn_DEF_Str4_tags)
+		/sizeof(asn_DEF_Str4_tags[0]), /* 1 */
+	asn_DEF_Str4_tags,	/* Same as above */
+	sizeof(asn_DEF_Str4_tags)
+		/sizeof(asn_DEF_Str4_tags[0]), /* 1 */
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -1152,7 +1152,7 @@
 
 /*** <<< FUNC-DECLS [PER-Visible] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_PER_Visible;
+extern asn_TYPE_descriptor_t asn_DEF_PER_Visible;
 asn_struct_free_f PER_Visible_free;
 asn_struct_print_f PER_Visible_print;
 asn_constr_check_f PER_Visible_constraint;
@@ -1179,7 +1179,7 @@
 /*** <<< CODE [PER-Visible] >>> ***/
 
 int
-PER_Visible_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+PER_Visible_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	const IA5String_t *st = sptr;
 	
@@ -1207,41 +1207,41 @@
  * so here we adjust the DEF accordingly.
  */
 static void
-PER_Visible_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
-	td->free_struct    = asn1_DEF_IA5String.free_struct;
-	td->print_struct   = asn1_DEF_IA5String.print_struct;
-	td->ber_decoder    = asn1_DEF_IA5String.ber_decoder;
-	td->der_encoder    = asn1_DEF_IA5String.der_encoder;
-	td->xer_decoder    = asn1_DEF_IA5String.xer_decoder;
-	td->xer_encoder    = asn1_DEF_IA5String.xer_encoder;
-	td->elements       = asn1_DEF_IA5String.elements;
-	td->elements_count = asn1_DEF_IA5String.elements_count;
-	td->specifics      = asn1_DEF_IA5String.specifics;
+PER_Visible_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_IA5String.free_struct;
+	td->print_struct   = asn_DEF_IA5String.print_struct;
+	td->ber_decoder    = asn_DEF_IA5String.ber_decoder;
+	td->der_encoder    = asn_DEF_IA5String.der_encoder;
+	td->xer_decoder    = asn_DEF_IA5String.xer_decoder;
+	td->xer_encoder    = asn_DEF_IA5String.xer_encoder;
+	td->elements       = asn_DEF_IA5String.elements;
+	td->elements_count = asn_DEF_IA5String.elements_count;
+	td->specifics      = asn_DEF_IA5String.specifics;
 }
 
 void
-PER_Visible_free(asn1_TYPE_descriptor_t *td,
+PER_Visible_free(asn_TYPE_descriptor_t *td,
 		void *struct_ptr, int contents_only) {
 	PER_Visible_inherit_TYPE_descriptor(td);
 	td->free_struct(td, struct_ptr, contents_only);
 }
 
 int
-PER_Visible_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
+PER_Visible_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
 		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
 	PER_Visible_inherit_TYPE_descriptor(td);
 	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
 }
 
 ber_dec_rval_t
-PER_Visible_decode_ber(asn1_TYPE_descriptor_t *td,
+PER_Visible_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		void **structure, void *bufptr, size_t size, int tag_mode) {
 	PER_Visible_inherit_TYPE_descriptor(td);
-	return td->ber_decoder(td, structure, bufptr, size, tag_mode);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
 }
 
 asn_enc_rval_t
-PER_Visible_encode_der(asn1_TYPE_descriptor_t *td,
+PER_Visible_encode_der(asn_TYPE_descriptor_t *td,
 		void *structure, int tag_mode, ber_tlv_tag_t tag,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	PER_Visible_inherit_TYPE_descriptor(td);
@@ -1249,7 +1249,7 @@
 }
 
 asn_enc_rval_t
-PER_Visible_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
+PER_Visible_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
 		int ilevel, enum xer_encoder_flags_e flags,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	PER_Visible_inherit_TYPE_descriptor(td);
@@ -1259,10 +1259,10 @@
 
 /*** <<< STAT-DEFS [PER-Visible] >>> ***/
 
-static ber_tlv_tag_t asn1_DEF_PER_Visible_tags[] = {
+static ber_tlv_tag_t asn_DEF_PER_Visible_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (22 << 2))
 };
-asn1_TYPE_descriptor_t asn1_DEF_PER_Visible = {
+asn_TYPE_descriptor_t asn_DEF_PER_Visible = {
 	"PER-Visible",
 	PER_Visible_free,
 	PER_Visible_print,
@@ -1272,12 +1272,12 @@
 	0,				/* Not implemented yet */
 	PER_Visible_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_PER_Visible_tags,
-	sizeof(asn1_DEF_PER_Visible_tags)
-		/sizeof(asn1_DEF_PER_Visible_tags[0]), /* 1 */
-	asn1_DEF_PER_Visible_tags,	/* Same as above */
-	sizeof(asn1_DEF_PER_Visible_tags)
-		/sizeof(asn1_DEF_PER_Visible_tags[0]), /* 1 */
+	asn_DEF_PER_Visible_tags,
+	sizeof(asn_DEF_PER_Visible_tags)
+		/sizeof(asn_DEF_PER_Visible_tags[0]), /* 1 */
+	asn_DEF_PER_Visible_tags,	/* Same as above */
+	sizeof(asn_DEF_PER_Visible_tags)
+		/sizeof(asn_DEF_PER_Visible_tags[0]), /* 1 */
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -1294,7 +1294,7 @@
 
 /*** <<< FUNC-DECLS [PER-Visible-2] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_PER_Visible_2;
+extern asn_TYPE_descriptor_t asn_DEF_PER_Visible_2;
 asn_struct_free_f PER_Visible_2_free;
 asn_struct_print_f PER_Visible_2_print;
 asn_constr_check_f PER_Visible_2_constraint;
@@ -1321,7 +1321,7 @@
 /*** <<< CODE [PER-Visible-2] >>> ***/
 
 int
-PER_Visible_2_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+PER_Visible_2_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	const PER_Visible_t *st = sptr;
 	
@@ -1349,41 +1349,41 @@
  * so here we adjust the DEF accordingly.
  */
 static void
-PER_Visible_2_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
-	td->free_struct    = asn1_DEF_PER_Visible.free_struct;
-	td->print_struct   = asn1_DEF_PER_Visible.print_struct;
-	td->ber_decoder    = asn1_DEF_PER_Visible.ber_decoder;
-	td->der_encoder    = asn1_DEF_PER_Visible.der_encoder;
-	td->xer_decoder    = asn1_DEF_PER_Visible.xer_decoder;
-	td->xer_encoder    = asn1_DEF_PER_Visible.xer_encoder;
-	td->elements       = asn1_DEF_PER_Visible.elements;
-	td->elements_count = asn1_DEF_PER_Visible.elements_count;
-	td->specifics      = asn1_DEF_PER_Visible.specifics;
+PER_Visible_2_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_PER_Visible.free_struct;
+	td->print_struct   = asn_DEF_PER_Visible.print_struct;
+	td->ber_decoder    = asn_DEF_PER_Visible.ber_decoder;
+	td->der_encoder    = asn_DEF_PER_Visible.der_encoder;
+	td->xer_decoder    = asn_DEF_PER_Visible.xer_decoder;
+	td->xer_encoder    = asn_DEF_PER_Visible.xer_encoder;
+	td->elements       = asn_DEF_PER_Visible.elements;
+	td->elements_count = asn_DEF_PER_Visible.elements_count;
+	td->specifics      = asn_DEF_PER_Visible.specifics;
 }
 
 void
-PER_Visible_2_free(asn1_TYPE_descriptor_t *td,
+PER_Visible_2_free(asn_TYPE_descriptor_t *td,
 		void *struct_ptr, int contents_only) {
 	PER_Visible_2_inherit_TYPE_descriptor(td);
 	td->free_struct(td, struct_ptr, contents_only);
 }
 
 int
-PER_Visible_2_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
+PER_Visible_2_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
 		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
 	PER_Visible_2_inherit_TYPE_descriptor(td);
 	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
 }
 
 ber_dec_rval_t
-PER_Visible_2_decode_ber(asn1_TYPE_descriptor_t *td,
+PER_Visible_2_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		void **structure, void *bufptr, size_t size, int tag_mode) {
 	PER_Visible_2_inherit_TYPE_descriptor(td);
-	return td->ber_decoder(td, structure, bufptr, size, tag_mode);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
 }
 
 asn_enc_rval_t
-PER_Visible_2_encode_der(asn1_TYPE_descriptor_t *td,
+PER_Visible_2_encode_der(asn_TYPE_descriptor_t *td,
 		void *structure, int tag_mode, ber_tlv_tag_t tag,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	PER_Visible_2_inherit_TYPE_descriptor(td);
@@ -1391,7 +1391,7 @@
 }
 
 asn_enc_rval_t
-PER_Visible_2_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
+PER_Visible_2_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
 		int ilevel, enum xer_encoder_flags_e flags,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	PER_Visible_2_inherit_TYPE_descriptor(td);
@@ -1401,10 +1401,10 @@
 
 /*** <<< STAT-DEFS [PER-Visible-2] >>> ***/
 
-static ber_tlv_tag_t asn1_DEF_PER_Visible_2_tags[] = {
+static ber_tlv_tag_t asn_DEF_PER_Visible_2_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (22 << 2))
 };
-asn1_TYPE_descriptor_t asn1_DEF_PER_Visible_2 = {
+asn_TYPE_descriptor_t asn_DEF_PER_Visible_2 = {
 	"PER-Visible-2",
 	PER_Visible_2_free,
 	PER_Visible_2_print,
@@ -1414,12 +1414,12 @@
 	0,				/* Not implemented yet */
 	PER_Visible_2_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_PER_Visible_2_tags,
-	sizeof(asn1_DEF_PER_Visible_2_tags)
-		/sizeof(asn1_DEF_PER_Visible_2_tags[0]), /* 1 */
-	asn1_DEF_PER_Visible_2_tags,	/* Same as above */
-	sizeof(asn1_DEF_PER_Visible_2_tags)
-		/sizeof(asn1_DEF_PER_Visible_2_tags[0]), /* 1 */
+	asn_DEF_PER_Visible_2_tags,
+	sizeof(asn_DEF_PER_Visible_2_tags)
+		/sizeof(asn_DEF_PER_Visible_2_tags[0]), /* 1 */
+	asn_DEF_PER_Visible_2_tags,	/* Same as above */
+	sizeof(asn_DEF_PER_Visible_2_tags)
+		/sizeof(asn_DEF_PER_Visible_2_tags[0]), /* 1 */
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -1436,7 +1436,7 @@
 
 /*** <<< FUNC-DECLS [Not-PER-Visible-1] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_Not_PER_Visible_1;
+extern asn_TYPE_descriptor_t asn_DEF_Not_PER_Visible_1;
 asn_struct_free_f Not_PER_Visible_1_free;
 asn_struct_print_f Not_PER_Visible_1_print;
 asn_constr_check_f Not_PER_Visible_1_constraint;
@@ -1463,7 +1463,7 @@
 /*** <<< CODE [Not-PER-Visible-1] >>> ***/
 
 int
-Not_PER_Visible_1_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+Not_PER_Visible_1_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	const PER_Visible_t *st = sptr;
 	
@@ -1491,41 +1491,41 @@
  * so here we adjust the DEF accordingly.
  */
 static void
-Not_PER_Visible_1_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
-	td->free_struct    = asn1_DEF_PER_Visible.free_struct;
-	td->print_struct   = asn1_DEF_PER_Visible.print_struct;
-	td->ber_decoder    = asn1_DEF_PER_Visible.ber_decoder;
-	td->der_encoder    = asn1_DEF_PER_Visible.der_encoder;
-	td->xer_decoder    = asn1_DEF_PER_Visible.xer_decoder;
-	td->xer_encoder    = asn1_DEF_PER_Visible.xer_encoder;
-	td->elements       = asn1_DEF_PER_Visible.elements;
-	td->elements_count = asn1_DEF_PER_Visible.elements_count;
-	td->specifics      = asn1_DEF_PER_Visible.specifics;
+Not_PER_Visible_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_PER_Visible.free_struct;
+	td->print_struct   = asn_DEF_PER_Visible.print_struct;
+	td->ber_decoder    = asn_DEF_PER_Visible.ber_decoder;
+	td->der_encoder    = asn_DEF_PER_Visible.der_encoder;
+	td->xer_decoder    = asn_DEF_PER_Visible.xer_decoder;
+	td->xer_encoder    = asn_DEF_PER_Visible.xer_encoder;
+	td->elements       = asn_DEF_PER_Visible.elements;
+	td->elements_count = asn_DEF_PER_Visible.elements_count;
+	td->specifics      = asn_DEF_PER_Visible.specifics;
 }
 
 void
-Not_PER_Visible_1_free(asn1_TYPE_descriptor_t *td,
+Not_PER_Visible_1_free(asn_TYPE_descriptor_t *td,
 		void *struct_ptr, int contents_only) {
 	Not_PER_Visible_1_inherit_TYPE_descriptor(td);
 	td->free_struct(td, struct_ptr, contents_only);
 }
 
 int
-Not_PER_Visible_1_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
+Not_PER_Visible_1_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
 		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
 	Not_PER_Visible_1_inherit_TYPE_descriptor(td);
 	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
 }
 
 ber_dec_rval_t
-Not_PER_Visible_1_decode_ber(asn1_TYPE_descriptor_t *td,
+Not_PER_Visible_1_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		void **structure, void *bufptr, size_t size, int tag_mode) {
 	Not_PER_Visible_1_inherit_TYPE_descriptor(td);
-	return td->ber_decoder(td, structure, bufptr, size, tag_mode);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
 }
 
 asn_enc_rval_t
-Not_PER_Visible_1_encode_der(asn1_TYPE_descriptor_t *td,
+Not_PER_Visible_1_encode_der(asn_TYPE_descriptor_t *td,
 		void *structure, int tag_mode, ber_tlv_tag_t tag,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	Not_PER_Visible_1_inherit_TYPE_descriptor(td);
@@ -1533,7 +1533,7 @@
 }
 
 asn_enc_rval_t
-Not_PER_Visible_1_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
+Not_PER_Visible_1_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
 		int ilevel, enum xer_encoder_flags_e flags,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	Not_PER_Visible_1_inherit_TYPE_descriptor(td);
@@ -1543,10 +1543,10 @@
 
 /*** <<< STAT-DEFS [Not-PER-Visible-1] >>> ***/
 
-static ber_tlv_tag_t asn1_DEF_Not_PER_Visible_1_tags[] = {
+static ber_tlv_tag_t asn_DEF_Not_PER_Visible_1_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (22 << 2))
 };
-asn1_TYPE_descriptor_t asn1_DEF_Not_PER_Visible_1 = {
+asn_TYPE_descriptor_t asn_DEF_Not_PER_Visible_1 = {
 	"Not-PER-Visible-1",
 	Not_PER_Visible_1_free,
 	Not_PER_Visible_1_print,
@@ -1556,12 +1556,12 @@
 	0,				/* Not implemented yet */
 	Not_PER_Visible_1_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_Not_PER_Visible_1_tags,
-	sizeof(asn1_DEF_Not_PER_Visible_1_tags)
-		/sizeof(asn1_DEF_Not_PER_Visible_1_tags[0]), /* 1 */
-	asn1_DEF_Not_PER_Visible_1_tags,	/* Same as above */
-	sizeof(asn1_DEF_Not_PER_Visible_1_tags)
-		/sizeof(asn1_DEF_Not_PER_Visible_1_tags[0]), /* 1 */
+	asn_DEF_Not_PER_Visible_1_tags,
+	sizeof(asn_DEF_Not_PER_Visible_1_tags)
+		/sizeof(asn_DEF_Not_PER_Visible_1_tags[0]), /* 1 */
+	asn_DEF_Not_PER_Visible_1_tags,	/* Same as above */
+	sizeof(asn_DEF_Not_PER_Visible_1_tags)
+		/sizeof(asn_DEF_Not_PER_Visible_1_tags[0]), /* 1 */
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -1578,7 +1578,7 @@
 
 /*** <<< FUNC-DECLS [Not-PER-Visible-2] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_Not_PER_Visible_2;
+extern asn_TYPE_descriptor_t asn_DEF_Not_PER_Visible_2;
 asn_struct_free_f Not_PER_Visible_2_free;
 asn_struct_print_f Not_PER_Visible_2_print;
 asn_constr_check_f Not_PER_Visible_2_constraint;
@@ -1605,7 +1605,7 @@
 /*** <<< CODE [Not-PER-Visible-2] >>> ***/
 
 int
-Not_PER_Visible_2_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+Not_PER_Visible_2_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	const PER_Visible_t *st = sptr;
 	
@@ -1633,41 +1633,41 @@
  * so here we adjust the DEF accordingly.
  */
 static void
-Not_PER_Visible_2_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
-	td->free_struct    = asn1_DEF_PER_Visible.free_struct;
-	td->print_struct   = asn1_DEF_PER_Visible.print_struct;
-	td->ber_decoder    = asn1_DEF_PER_Visible.ber_decoder;
-	td->der_encoder    = asn1_DEF_PER_Visible.der_encoder;
-	td->xer_decoder    = asn1_DEF_PER_Visible.xer_decoder;
-	td->xer_encoder    = asn1_DEF_PER_Visible.xer_encoder;
-	td->elements       = asn1_DEF_PER_Visible.elements;
-	td->elements_count = asn1_DEF_PER_Visible.elements_count;
-	td->specifics      = asn1_DEF_PER_Visible.specifics;
+Not_PER_Visible_2_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_PER_Visible.free_struct;
+	td->print_struct   = asn_DEF_PER_Visible.print_struct;
+	td->ber_decoder    = asn_DEF_PER_Visible.ber_decoder;
+	td->der_encoder    = asn_DEF_PER_Visible.der_encoder;
+	td->xer_decoder    = asn_DEF_PER_Visible.xer_decoder;
+	td->xer_encoder    = asn_DEF_PER_Visible.xer_encoder;
+	td->elements       = asn_DEF_PER_Visible.elements;
+	td->elements_count = asn_DEF_PER_Visible.elements_count;
+	td->specifics      = asn_DEF_PER_Visible.specifics;
 }
 
 void
-Not_PER_Visible_2_free(asn1_TYPE_descriptor_t *td,
+Not_PER_Visible_2_free(asn_TYPE_descriptor_t *td,
 		void *struct_ptr, int contents_only) {
 	Not_PER_Visible_2_inherit_TYPE_descriptor(td);
 	td->free_struct(td, struct_ptr, contents_only);
 }
 
 int
-Not_PER_Visible_2_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
+Not_PER_Visible_2_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
 		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
 	Not_PER_Visible_2_inherit_TYPE_descriptor(td);
 	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
 }
 
 ber_dec_rval_t
-Not_PER_Visible_2_decode_ber(asn1_TYPE_descriptor_t *td,
+Not_PER_Visible_2_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		void **structure, void *bufptr, size_t size, int tag_mode) {
 	Not_PER_Visible_2_inherit_TYPE_descriptor(td);
-	return td->ber_decoder(td, structure, bufptr, size, tag_mode);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
 }
 
 asn_enc_rval_t
-Not_PER_Visible_2_encode_der(asn1_TYPE_descriptor_t *td,
+Not_PER_Visible_2_encode_der(asn_TYPE_descriptor_t *td,
 		void *structure, int tag_mode, ber_tlv_tag_t tag,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	Not_PER_Visible_2_inherit_TYPE_descriptor(td);
@@ -1675,7 +1675,7 @@
 }
 
 asn_enc_rval_t
-Not_PER_Visible_2_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
+Not_PER_Visible_2_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
 		int ilevel, enum xer_encoder_flags_e flags,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	Not_PER_Visible_2_inherit_TYPE_descriptor(td);
@@ -1685,10 +1685,10 @@
 
 /*** <<< STAT-DEFS [Not-PER-Visible-2] >>> ***/
 
-static ber_tlv_tag_t asn1_DEF_Not_PER_Visible_2_tags[] = {
+static ber_tlv_tag_t asn_DEF_Not_PER_Visible_2_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (22 << 2))
 };
-asn1_TYPE_descriptor_t asn1_DEF_Not_PER_Visible_2 = {
+asn_TYPE_descriptor_t asn_DEF_Not_PER_Visible_2 = {
 	"Not-PER-Visible-2",
 	Not_PER_Visible_2_free,
 	Not_PER_Visible_2_print,
@@ -1698,12 +1698,12 @@
 	0,				/* Not implemented yet */
 	Not_PER_Visible_2_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_Not_PER_Visible_2_tags,
-	sizeof(asn1_DEF_Not_PER_Visible_2_tags)
-		/sizeof(asn1_DEF_Not_PER_Visible_2_tags[0]), /* 1 */
-	asn1_DEF_Not_PER_Visible_2_tags,	/* Same as above */
-	sizeof(asn1_DEF_Not_PER_Visible_2_tags)
-		/sizeof(asn1_DEF_Not_PER_Visible_2_tags[0]), /* 1 */
+	asn_DEF_Not_PER_Visible_2_tags,
+	sizeof(asn_DEF_Not_PER_Visible_2_tags)
+		/sizeof(asn_DEF_Not_PER_Visible_2_tags[0]), /* 1 */
+	asn_DEF_Not_PER_Visible_2_tags,	/* Same as above */
+	sizeof(asn_DEF_Not_PER_Visible_2_tags)
+		/sizeof(asn_DEF_Not_PER_Visible_2_tags[0]), /* 1 */
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -1720,7 +1720,7 @@
 
 /*** <<< FUNC-DECLS [Not-PER-Visible-3] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_Not_PER_Visible_3;
+extern asn_TYPE_descriptor_t asn_DEF_Not_PER_Visible_3;
 asn_struct_free_f Not_PER_Visible_3_free;
 asn_struct_print_f Not_PER_Visible_3_print;
 asn_constr_check_f Not_PER_Visible_3_constraint;
@@ -1747,7 +1747,7 @@
 /*** <<< CODE [Not-PER-Visible-3] >>> ***/
 
 int
-Not_PER_Visible_3_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+Not_PER_Visible_3_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	const PER_Visible_t *st = sptr;
 	
@@ -1775,41 +1775,41 @@
  * so here we adjust the DEF accordingly.
  */
 static void
-Not_PER_Visible_3_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
-	td->free_struct    = asn1_DEF_PER_Visible.free_struct;
-	td->print_struct   = asn1_DEF_PER_Visible.print_struct;
-	td->ber_decoder    = asn1_DEF_PER_Visible.ber_decoder;
-	td->der_encoder    = asn1_DEF_PER_Visible.der_encoder;
-	td->xer_decoder    = asn1_DEF_PER_Visible.xer_decoder;
-	td->xer_encoder    = asn1_DEF_PER_Visible.xer_encoder;
-	td->elements       = asn1_DEF_PER_Visible.elements;
-	td->elements_count = asn1_DEF_PER_Visible.elements_count;
-	td->specifics      = asn1_DEF_PER_Visible.specifics;
+Not_PER_Visible_3_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_PER_Visible.free_struct;
+	td->print_struct   = asn_DEF_PER_Visible.print_struct;
+	td->ber_decoder    = asn_DEF_PER_Visible.ber_decoder;
+	td->der_encoder    = asn_DEF_PER_Visible.der_encoder;
+	td->xer_decoder    = asn_DEF_PER_Visible.xer_decoder;
+	td->xer_encoder    = asn_DEF_PER_Visible.xer_encoder;
+	td->elements       = asn_DEF_PER_Visible.elements;
+	td->elements_count = asn_DEF_PER_Visible.elements_count;
+	td->specifics      = asn_DEF_PER_Visible.specifics;
 }
 
 void
-Not_PER_Visible_3_free(asn1_TYPE_descriptor_t *td,
+Not_PER_Visible_3_free(asn_TYPE_descriptor_t *td,
 		void *struct_ptr, int contents_only) {
 	Not_PER_Visible_3_inherit_TYPE_descriptor(td);
 	td->free_struct(td, struct_ptr, contents_only);
 }
 
 int
-Not_PER_Visible_3_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
+Not_PER_Visible_3_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
 		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
 	Not_PER_Visible_3_inherit_TYPE_descriptor(td);
 	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
 }
 
 ber_dec_rval_t
-Not_PER_Visible_3_decode_ber(asn1_TYPE_descriptor_t *td,
+Not_PER_Visible_3_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		void **structure, void *bufptr, size_t size, int tag_mode) {
 	Not_PER_Visible_3_inherit_TYPE_descriptor(td);
-	return td->ber_decoder(td, structure, bufptr, size, tag_mode);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
 }
 
 asn_enc_rval_t
-Not_PER_Visible_3_encode_der(asn1_TYPE_descriptor_t *td,
+Not_PER_Visible_3_encode_der(asn_TYPE_descriptor_t *td,
 		void *structure, int tag_mode, ber_tlv_tag_t tag,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	Not_PER_Visible_3_inherit_TYPE_descriptor(td);
@@ -1817,7 +1817,7 @@
 }
 
 asn_enc_rval_t
-Not_PER_Visible_3_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
+Not_PER_Visible_3_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
 		int ilevel, enum xer_encoder_flags_e flags,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	Not_PER_Visible_3_inherit_TYPE_descriptor(td);
@@ -1827,10 +1827,10 @@
 
 /*** <<< STAT-DEFS [Not-PER-Visible-3] >>> ***/
 
-static ber_tlv_tag_t asn1_DEF_Not_PER_Visible_3_tags[] = {
+static ber_tlv_tag_t asn_DEF_Not_PER_Visible_3_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (22 << 2))
 };
-asn1_TYPE_descriptor_t asn1_DEF_Not_PER_Visible_3 = {
+asn_TYPE_descriptor_t asn_DEF_Not_PER_Visible_3 = {
 	"Not-PER-Visible-3",
 	Not_PER_Visible_3_free,
 	Not_PER_Visible_3_print,
@@ -1840,12 +1840,12 @@
 	0,				/* Not implemented yet */
 	Not_PER_Visible_3_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_Not_PER_Visible_3_tags,
-	sizeof(asn1_DEF_Not_PER_Visible_3_tags)
-		/sizeof(asn1_DEF_Not_PER_Visible_3_tags[0]), /* 1 */
-	asn1_DEF_Not_PER_Visible_3_tags,	/* Same as above */
-	sizeof(asn1_DEF_Not_PER_Visible_3_tags)
-		/sizeof(asn1_DEF_Not_PER_Visible_3_tags[0]), /* 1 */
+	asn_DEF_Not_PER_Visible_3_tags,
+	sizeof(asn_DEF_Not_PER_Visible_3_tags)
+		/sizeof(asn_DEF_Not_PER_Visible_3_tags[0]), /* 1 */
+	asn_DEF_Not_PER_Visible_3_tags,	/* Same as above */
+	sizeof(asn_DEF_Not_PER_Visible_3_tags)
+		/sizeof(asn_DEF_Not_PER_Visible_3_tags[0]), /* 1 */
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -1862,7 +1862,7 @@
 
 /*** <<< FUNC-DECLS [SIZE-but-not-FROM] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_SIZE_but_not_FROM;
+extern asn_TYPE_descriptor_t asn_DEF_SIZE_but_not_FROM;
 asn_struct_free_f SIZE_but_not_FROM_free;
 asn_struct_print_f SIZE_but_not_FROM_print;
 asn_constr_check_f SIZE_but_not_FROM_constraint;
@@ -1889,7 +1889,7 @@
 /*** <<< CODE [SIZE-but-not-FROM] >>> ***/
 
 int
-SIZE_but_not_FROM_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+SIZE_but_not_FROM_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	const PER_Visible_t *st = sptr;
 	size_t size;
@@ -1920,41 +1920,41 @@
  * so here we adjust the DEF accordingly.
  */
 static void
-SIZE_but_not_FROM_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
-	td->free_struct    = asn1_DEF_PER_Visible.free_struct;
-	td->print_struct   = asn1_DEF_PER_Visible.print_struct;
-	td->ber_decoder    = asn1_DEF_PER_Visible.ber_decoder;
-	td->der_encoder    = asn1_DEF_PER_Visible.der_encoder;
-	td->xer_decoder    = asn1_DEF_PER_Visible.xer_decoder;
-	td->xer_encoder    = asn1_DEF_PER_Visible.xer_encoder;
-	td->elements       = asn1_DEF_PER_Visible.elements;
-	td->elements_count = asn1_DEF_PER_Visible.elements_count;
-	td->specifics      = asn1_DEF_PER_Visible.specifics;
+SIZE_but_not_FROM_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_PER_Visible.free_struct;
+	td->print_struct   = asn_DEF_PER_Visible.print_struct;
+	td->ber_decoder    = asn_DEF_PER_Visible.ber_decoder;
+	td->der_encoder    = asn_DEF_PER_Visible.der_encoder;
+	td->xer_decoder    = asn_DEF_PER_Visible.xer_decoder;
+	td->xer_encoder    = asn_DEF_PER_Visible.xer_encoder;
+	td->elements       = asn_DEF_PER_Visible.elements;
+	td->elements_count = asn_DEF_PER_Visible.elements_count;
+	td->specifics      = asn_DEF_PER_Visible.specifics;
 }
 
 void
-SIZE_but_not_FROM_free(asn1_TYPE_descriptor_t *td,
+SIZE_but_not_FROM_free(asn_TYPE_descriptor_t *td,
 		void *struct_ptr, int contents_only) {
 	SIZE_but_not_FROM_inherit_TYPE_descriptor(td);
 	td->free_struct(td, struct_ptr, contents_only);
 }
 
 int
-SIZE_but_not_FROM_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
+SIZE_but_not_FROM_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
 		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
 	SIZE_but_not_FROM_inherit_TYPE_descriptor(td);
 	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
 }
 
 ber_dec_rval_t
-SIZE_but_not_FROM_decode_ber(asn1_TYPE_descriptor_t *td,
+SIZE_but_not_FROM_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		void **structure, void *bufptr, size_t size, int tag_mode) {
 	SIZE_but_not_FROM_inherit_TYPE_descriptor(td);
-	return td->ber_decoder(td, structure, bufptr, size, tag_mode);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
 }
 
 asn_enc_rval_t
-SIZE_but_not_FROM_encode_der(asn1_TYPE_descriptor_t *td,
+SIZE_but_not_FROM_encode_der(asn_TYPE_descriptor_t *td,
 		void *structure, int tag_mode, ber_tlv_tag_t tag,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	SIZE_but_not_FROM_inherit_TYPE_descriptor(td);
@@ -1962,7 +1962,7 @@
 }
 
 asn_enc_rval_t
-SIZE_but_not_FROM_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
+SIZE_but_not_FROM_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
 		int ilevel, enum xer_encoder_flags_e flags,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	SIZE_but_not_FROM_inherit_TYPE_descriptor(td);
@@ -1972,10 +1972,10 @@
 
 /*** <<< STAT-DEFS [SIZE-but-not-FROM] >>> ***/
 
-static ber_tlv_tag_t asn1_DEF_SIZE_but_not_FROM_tags[] = {
+static ber_tlv_tag_t asn_DEF_SIZE_but_not_FROM_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (22 << 2))
 };
-asn1_TYPE_descriptor_t asn1_DEF_SIZE_but_not_FROM = {
+asn_TYPE_descriptor_t asn_DEF_SIZE_but_not_FROM = {
 	"SIZE-but-not-FROM",
 	SIZE_but_not_FROM_free,
 	SIZE_but_not_FROM_print,
@@ -1985,12 +1985,12 @@
 	0,				/* Not implemented yet */
 	SIZE_but_not_FROM_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_SIZE_but_not_FROM_tags,
-	sizeof(asn1_DEF_SIZE_but_not_FROM_tags)
-		/sizeof(asn1_DEF_SIZE_but_not_FROM_tags[0]), /* 1 */
-	asn1_DEF_SIZE_but_not_FROM_tags,	/* Same as above */
-	sizeof(asn1_DEF_SIZE_but_not_FROM_tags)
-		/sizeof(asn1_DEF_SIZE_but_not_FROM_tags[0]), /* 1 */
+	asn_DEF_SIZE_but_not_FROM_tags,
+	sizeof(asn_DEF_SIZE_but_not_FROM_tags)
+		/sizeof(asn_DEF_SIZE_but_not_FROM_tags[0]), /* 1 */
+	asn_DEF_SIZE_but_not_FROM_tags,	/* Same as above */
+	sizeof(asn_DEF_SIZE_but_not_FROM_tags)
+		/sizeof(asn_DEF_SIZE_but_not_FROM_tags[0]), /* 1 */
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -2007,7 +2007,7 @@
 
 /*** <<< FUNC-DECLS [SIZE-and-FROM] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_SIZE_and_FROM;
+extern asn_TYPE_descriptor_t asn_DEF_SIZE_and_FROM;
 asn_struct_free_f SIZE_and_FROM_free;
 asn_struct_print_f SIZE_and_FROM_print;
 asn_constr_check_f SIZE_and_FROM_constraint;
@@ -2034,7 +2034,7 @@
 /*** <<< CODE [SIZE-and-FROM] >>> ***/
 
 int
-SIZE_and_FROM_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+SIZE_and_FROM_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	const PER_Visible_t *st = sptr;
 	size_t size;
@@ -2065,41 +2065,41 @@
  * so here we adjust the DEF accordingly.
  */
 static void
-SIZE_and_FROM_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
-	td->free_struct    = asn1_DEF_PER_Visible.free_struct;
-	td->print_struct   = asn1_DEF_PER_Visible.print_struct;
-	td->ber_decoder    = asn1_DEF_PER_Visible.ber_decoder;
-	td->der_encoder    = asn1_DEF_PER_Visible.der_encoder;
-	td->xer_decoder    = asn1_DEF_PER_Visible.xer_decoder;
-	td->xer_encoder    = asn1_DEF_PER_Visible.xer_encoder;
-	td->elements       = asn1_DEF_PER_Visible.elements;
-	td->elements_count = asn1_DEF_PER_Visible.elements_count;
-	td->specifics      = asn1_DEF_PER_Visible.specifics;
+SIZE_and_FROM_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_PER_Visible.free_struct;
+	td->print_struct   = asn_DEF_PER_Visible.print_struct;
+	td->ber_decoder    = asn_DEF_PER_Visible.ber_decoder;
+	td->der_encoder    = asn_DEF_PER_Visible.der_encoder;
+	td->xer_decoder    = asn_DEF_PER_Visible.xer_decoder;
+	td->xer_encoder    = asn_DEF_PER_Visible.xer_encoder;
+	td->elements       = asn_DEF_PER_Visible.elements;
+	td->elements_count = asn_DEF_PER_Visible.elements_count;
+	td->specifics      = asn_DEF_PER_Visible.specifics;
 }
 
 void
-SIZE_and_FROM_free(asn1_TYPE_descriptor_t *td,
+SIZE_and_FROM_free(asn_TYPE_descriptor_t *td,
 		void *struct_ptr, int contents_only) {
 	SIZE_and_FROM_inherit_TYPE_descriptor(td);
 	td->free_struct(td, struct_ptr, contents_only);
 }
 
 int
-SIZE_and_FROM_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
+SIZE_and_FROM_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
 		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
 	SIZE_and_FROM_inherit_TYPE_descriptor(td);
 	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
 }
 
 ber_dec_rval_t
-SIZE_and_FROM_decode_ber(asn1_TYPE_descriptor_t *td,
+SIZE_and_FROM_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		void **structure, void *bufptr, size_t size, int tag_mode) {
 	SIZE_and_FROM_inherit_TYPE_descriptor(td);
-	return td->ber_decoder(td, structure, bufptr, size, tag_mode);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
 }
 
 asn_enc_rval_t
-SIZE_and_FROM_encode_der(asn1_TYPE_descriptor_t *td,
+SIZE_and_FROM_encode_der(asn_TYPE_descriptor_t *td,
 		void *structure, int tag_mode, ber_tlv_tag_t tag,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	SIZE_and_FROM_inherit_TYPE_descriptor(td);
@@ -2107,7 +2107,7 @@
 }
 
 asn_enc_rval_t
-SIZE_and_FROM_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
+SIZE_and_FROM_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
 		int ilevel, enum xer_encoder_flags_e flags,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	SIZE_and_FROM_inherit_TYPE_descriptor(td);
@@ -2117,10 +2117,10 @@
 
 /*** <<< STAT-DEFS [SIZE-and-FROM] >>> ***/
 
-static ber_tlv_tag_t asn1_DEF_SIZE_and_FROM_tags[] = {
+static ber_tlv_tag_t asn_DEF_SIZE_and_FROM_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (22 << 2))
 };
-asn1_TYPE_descriptor_t asn1_DEF_SIZE_and_FROM = {
+asn_TYPE_descriptor_t asn_DEF_SIZE_and_FROM = {
 	"SIZE-and-FROM",
 	SIZE_and_FROM_free,
 	SIZE_and_FROM_print,
@@ -2130,12 +2130,12 @@
 	0,				/* Not implemented yet */
 	SIZE_and_FROM_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_SIZE_and_FROM_tags,
-	sizeof(asn1_DEF_SIZE_and_FROM_tags)
-		/sizeof(asn1_DEF_SIZE_and_FROM_tags[0]), /* 1 */
-	asn1_DEF_SIZE_and_FROM_tags,	/* Same as above */
-	sizeof(asn1_DEF_SIZE_and_FROM_tags)
-		/sizeof(asn1_DEF_SIZE_and_FROM_tags[0]), /* 1 */
+	asn_DEF_SIZE_and_FROM_tags,
+	sizeof(asn_DEF_SIZE_and_FROM_tags)
+		/sizeof(asn_DEF_SIZE_and_FROM_tags[0]), /* 1 */
+	asn_DEF_SIZE_and_FROM_tags,	/* Same as above */
+	sizeof(asn_DEF_SIZE_and_FROM_tags)
+		/sizeof(asn_DEF_SIZE_and_FROM_tags[0]), /* 1 */
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -2152,7 +2152,7 @@
 
 /*** <<< FUNC-DECLS [Neither-SIZE-nor-FROM] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_Neither_SIZE_nor_FROM;
+extern asn_TYPE_descriptor_t asn_DEF_Neither_SIZE_nor_FROM;
 asn_struct_free_f Neither_SIZE_nor_FROM_free;
 asn_struct_print_f Neither_SIZE_nor_FROM_print;
 asn_constr_check_f Neither_SIZE_nor_FROM_constraint;
@@ -2179,7 +2179,7 @@
 /*** <<< CODE [Neither-SIZE-nor-FROM] >>> ***/
 
 int
-Neither_SIZE_nor_FROM_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+Neither_SIZE_nor_FROM_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	const PER_Visible_t *st = sptr;
 	
@@ -2207,41 +2207,41 @@
  * so here we adjust the DEF accordingly.
  */
 static void
-Neither_SIZE_nor_FROM_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
-	td->free_struct    = asn1_DEF_PER_Visible.free_struct;
-	td->print_struct   = asn1_DEF_PER_Visible.print_struct;
-	td->ber_decoder    = asn1_DEF_PER_Visible.ber_decoder;
-	td->der_encoder    = asn1_DEF_PER_Visible.der_encoder;
-	td->xer_decoder    = asn1_DEF_PER_Visible.xer_decoder;
-	td->xer_encoder    = asn1_DEF_PER_Visible.xer_encoder;
-	td->elements       = asn1_DEF_PER_Visible.elements;
-	td->elements_count = asn1_DEF_PER_Visible.elements_count;
-	td->specifics      = asn1_DEF_PER_Visible.specifics;
+Neither_SIZE_nor_FROM_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_PER_Visible.free_struct;
+	td->print_struct   = asn_DEF_PER_Visible.print_struct;
+	td->ber_decoder    = asn_DEF_PER_Visible.ber_decoder;
+	td->der_encoder    = asn_DEF_PER_Visible.der_encoder;
+	td->xer_decoder    = asn_DEF_PER_Visible.xer_decoder;
+	td->xer_encoder    = asn_DEF_PER_Visible.xer_encoder;
+	td->elements       = asn_DEF_PER_Visible.elements;
+	td->elements_count = asn_DEF_PER_Visible.elements_count;
+	td->specifics      = asn_DEF_PER_Visible.specifics;
 }
 
 void
-Neither_SIZE_nor_FROM_free(asn1_TYPE_descriptor_t *td,
+Neither_SIZE_nor_FROM_free(asn_TYPE_descriptor_t *td,
 		void *struct_ptr, int contents_only) {
 	Neither_SIZE_nor_FROM_inherit_TYPE_descriptor(td);
 	td->free_struct(td, struct_ptr, contents_only);
 }
 
 int
-Neither_SIZE_nor_FROM_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
+Neither_SIZE_nor_FROM_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
 		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
 	Neither_SIZE_nor_FROM_inherit_TYPE_descriptor(td);
 	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
 }
 
 ber_dec_rval_t
-Neither_SIZE_nor_FROM_decode_ber(asn1_TYPE_descriptor_t *td,
+Neither_SIZE_nor_FROM_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		void **structure, void *bufptr, size_t size, int tag_mode) {
 	Neither_SIZE_nor_FROM_inherit_TYPE_descriptor(td);
-	return td->ber_decoder(td, structure, bufptr, size, tag_mode);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
 }
 
 asn_enc_rval_t
-Neither_SIZE_nor_FROM_encode_der(asn1_TYPE_descriptor_t *td,
+Neither_SIZE_nor_FROM_encode_der(asn_TYPE_descriptor_t *td,
 		void *structure, int tag_mode, ber_tlv_tag_t tag,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	Neither_SIZE_nor_FROM_inherit_TYPE_descriptor(td);
@@ -2249,7 +2249,7 @@
 }
 
 asn_enc_rval_t
-Neither_SIZE_nor_FROM_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
+Neither_SIZE_nor_FROM_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
 		int ilevel, enum xer_encoder_flags_e flags,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	Neither_SIZE_nor_FROM_inherit_TYPE_descriptor(td);
@@ -2259,10 +2259,10 @@
 
 /*** <<< STAT-DEFS [Neither-SIZE-nor-FROM] >>> ***/
 
-static ber_tlv_tag_t asn1_DEF_Neither_SIZE_nor_FROM_tags[] = {
+static ber_tlv_tag_t asn_DEF_Neither_SIZE_nor_FROM_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (22 << 2))
 };
-asn1_TYPE_descriptor_t asn1_DEF_Neither_SIZE_nor_FROM = {
+asn_TYPE_descriptor_t asn_DEF_Neither_SIZE_nor_FROM = {
 	"Neither-SIZE-nor-FROM",
 	Neither_SIZE_nor_FROM_free,
 	Neither_SIZE_nor_FROM_print,
@@ -2272,12 +2272,12 @@
 	0,				/* Not implemented yet */
 	Neither_SIZE_nor_FROM_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_Neither_SIZE_nor_FROM_tags,
-	sizeof(asn1_DEF_Neither_SIZE_nor_FROM_tags)
-		/sizeof(asn1_DEF_Neither_SIZE_nor_FROM_tags[0]), /* 1 */
-	asn1_DEF_Neither_SIZE_nor_FROM_tags,	/* Same as above */
-	sizeof(asn1_DEF_Neither_SIZE_nor_FROM_tags)
-		/sizeof(asn1_DEF_Neither_SIZE_nor_FROM_tags[0]), /* 1 */
+	asn_DEF_Neither_SIZE_nor_FROM_tags,
+	sizeof(asn_DEF_Neither_SIZE_nor_FROM_tags)
+		/sizeof(asn_DEF_Neither_SIZE_nor_FROM_tags[0]), /* 1 */
+	asn_DEF_Neither_SIZE_nor_FROM_tags,	/* Same as above */
+	sizeof(asn_DEF_Neither_SIZE_nor_FROM_tags)
+		/sizeof(asn_DEF_Neither_SIZE_nor_FROM_tags[0]), /* 1 */
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -2294,7 +2294,7 @@
 
 /*** <<< FUNC-DECLS [Utf8-3] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_Utf8_3;
+extern asn_TYPE_descriptor_t asn_DEF_Utf8_3;
 asn_struct_free_f Utf8_3_free;
 asn_struct_print_f Utf8_3_print;
 asn_constr_check_f Utf8_3_constraint;
@@ -2334,7 +2334,7 @@
 /*** <<< CODE [Utf8-3] >>> ***/
 
 int
-Utf8_3_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+Utf8_3_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	const Utf8_2_t *st = sptr;
 	size_t size;
@@ -2366,41 +2366,41 @@
  * so here we adjust the DEF accordingly.
  */
 static void
-Utf8_3_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
-	td->free_struct    = asn1_DEF_Utf8_2.free_struct;
-	td->print_struct   = asn1_DEF_Utf8_2.print_struct;
-	td->ber_decoder    = asn1_DEF_Utf8_2.ber_decoder;
-	td->der_encoder    = asn1_DEF_Utf8_2.der_encoder;
-	td->xer_decoder    = asn1_DEF_Utf8_2.xer_decoder;
-	td->xer_encoder    = asn1_DEF_Utf8_2.xer_encoder;
-	td->elements       = asn1_DEF_Utf8_2.elements;
-	td->elements_count = asn1_DEF_Utf8_2.elements_count;
-	td->specifics      = asn1_DEF_Utf8_2.specifics;
+Utf8_3_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_Utf8_2.free_struct;
+	td->print_struct   = asn_DEF_Utf8_2.print_struct;
+	td->ber_decoder    = asn_DEF_Utf8_2.ber_decoder;
+	td->der_encoder    = asn_DEF_Utf8_2.der_encoder;
+	td->xer_decoder    = asn_DEF_Utf8_2.xer_decoder;
+	td->xer_encoder    = asn_DEF_Utf8_2.xer_encoder;
+	td->elements       = asn_DEF_Utf8_2.elements;
+	td->elements_count = asn_DEF_Utf8_2.elements_count;
+	td->specifics      = asn_DEF_Utf8_2.specifics;
 }
 
 void
-Utf8_3_free(asn1_TYPE_descriptor_t *td,
+Utf8_3_free(asn_TYPE_descriptor_t *td,
 		void *struct_ptr, int contents_only) {
 	Utf8_3_inherit_TYPE_descriptor(td);
 	td->free_struct(td, struct_ptr, contents_only);
 }
 
 int
-Utf8_3_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
+Utf8_3_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
 		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
 	Utf8_3_inherit_TYPE_descriptor(td);
 	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
 }
 
 ber_dec_rval_t
-Utf8_3_decode_ber(asn1_TYPE_descriptor_t *td,
+Utf8_3_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		void **structure, void *bufptr, size_t size, int tag_mode) {
 	Utf8_3_inherit_TYPE_descriptor(td);
-	return td->ber_decoder(td, structure, bufptr, size, tag_mode);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
 }
 
 asn_enc_rval_t
-Utf8_3_encode_der(asn1_TYPE_descriptor_t *td,
+Utf8_3_encode_der(asn_TYPE_descriptor_t *td,
 		void *structure, int tag_mode, ber_tlv_tag_t tag,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	Utf8_3_inherit_TYPE_descriptor(td);
@@ -2408,7 +2408,7 @@
 }
 
 asn_enc_rval_t
-Utf8_3_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
+Utf8_3_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
 		int ilevel, enum xer_encoder_flags_e flags,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	Utf8_3_inherit_TYPE_descriptor(td);
@@ -2418,10 +2418,10 @@
 
 /*** <<< STAT-DEFS [Utf8-3] >>> ***/
 
-static ber_tlv_tag_t asn1_DEF_Utf8_3_tags[] = {
+static ber_tlv_tag_t asn_DEF_Utf8_3_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (12 << 2))
 };
-asn1_TYPE_descriptor_t asn1_DEF_Utf8_3 = {
+asn_TYPE_descriptor_t asn_DEF_Utf8_3 = {
 	"Utf8-3",
 	Utf8_3_free,
 	Utf8_3_print,
@@ -2431,12 +2431,12 @@
 	0,				/* Not implemented yet */
 	Utf8_3_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_Utf8_3_tags,
-	sizeof(asn1_DEF_Utf8_3_tags)
-		/sizeof(asn1_DEF_Utf8_3_tags[0]), /* 1 */
-	asn1_DEF_Utf8_3_tags,	/* Same as above */
-	sizeof(asn1_DEF_Utf8_3_tags)
-		/sizeof(asn1_DEF_Utf8_3_tags[0]), /* 1 */
+	asn_DEF_Utf8_3_tags,
+	sizeof(asn_DEF_Utf8_3_tags)
+		/sizeof(asn_DEF_Utf8_3_tags[0]), /* 1 */
+	asn_DEF_Utf8_3_tags,	/* Same as above */
+	sizeof(asn_DEF_Utf8_3_tags)
+		/sizeof(asn_DEF_Utf8_3_tags[0]), /* 1 */
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -2453,7 +2453,7 @@
 
 /*** <<< FUNC-DECLS [Utf8-2] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_Utf8_2;
+extern asn_TYPE_descriptor_t asn_DEF_Utf8_2;
 asn_struct_free_f Utf8_2_free;
 asn_struct_print_f Utf8_2_print;
 asn_constr_check_f Utf8_2_constraint;
@@ -2464,7 +2464,7 @@
 /*** <<< CODE [Utf8-2] >>> ***/
 
 int
-Utf8_2_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+Utf8_2_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	const Utf8_1_t *st = sptr;
 	size_t size;
@@ -2495,41 +2495,41 @@
  * so here we adjust the DEF accordingly.
  */
 static void
-Utf8_2_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
-	td->free_struct    = asn1_DEF_Utf8_1.free_struct;
-	td->print_struct   = asn1_DEF_Utf8_1.print_struct;
-	td->ber_decoder    = asn1_DEF_Utf8_1.ber_decoder;
-	td->der_encoder    = asn1_DEF_Utf8_1.der_encoder;
-	td->xer_decoder    = asn1_DEF_Utf8_1.xer_decoder;
-	td->xer_encoder    = asn1_DEF_Utf8_1.xer_encoder;
-	td->elements       = asn1_DEF_Utf8_1.elements;
-	td->elements_count = asn1_DEF_Utf8_1.elements_count;
-	td->specifics      = asn1_DEF_Utf8_1.specifics;
+Utf8_2_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_Utf8_1.free_struct;
+	td->print_struct   = asn_DEF_Utf8_1.print_struct;
+	td->ber_decoder    = asn_DEF_Utf8_1.ber_decoder;
+	td->der_encoder    = asn_DEF_Utf8_1.der_encoder;
+	td->xer_decoder    = asn_DEF_Utf8_1.xer_decoder;
+	td->xer_encoder    = asn_DEF_Utf8_1.xer_encoder;
+	td->elements       = asn_DEF_Utf8_1.elements;
+	td->elements_count = asn_DEF_Utf8_1.elements_count;
+	td->specifics      = asn_DEF_Utf8_1.specifics;
 }
 
 void
-Utf8_2_free(asn1_TYPE_descriptor_t *td,
+Utf8_2_free(asn_TYPE_descriptor_t *td,
 		void *struct_ptr, int contents_only) {
 	Utf8_2_inherit_TYPE_descriptor(td);
 	td->free_struct(td, struct_ptr, contents_only);
 }
 
 int
-Utf8_2_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
+Utf8_2_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
 		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
 	Utf8_2_inherit_TYPE_descriptor(td);
 	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
 }
 
 ber_dec_rval_t
-Utf8_2_decode_ber(asn1_TYPE_descriptor_t *td,
+Utf8_2_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		void **structure, void *bufptr, size_t size, int tag_mode) {
 	Utf8_2_inherit_TYPE_descriptor(td);
-	return td->ber_decoder(td, structure, bufptr, size, tag_mode);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
 }
 
 asn_enc_rval_t
-Utf8_2_encode_der(asn1_TYPE_descriptor_t *td,
+Utf8_2_encode_der(asn_TYPE_descriptor_t *td,
 		void *structure, int tag_mode, ber_tlv_tag_t tag,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	Utf8_2_inherit_TYPE_descriptor(td);
@@ -2537,7 +2537,7 @@
 }
 
 asn_enc_rval_t
-Utf8_2_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
+Utf8_2_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
 		int ilevel, enum xer_encoder_flags_e flags,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	Utf8_2_inherit_TYPE_descriptor(td);
@@ -2547,10 +2547,10 @@
 
 /*** <<< STAT-DEFS [Utf8-2] >>> ***/
 
-static ber_tlv_tag_t asn1_DEF_Utf8_2_tags[] = {
+static ber_tlv_tag_t asn_DEF_Utf8_2_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (12 << 2))
 };
-asn1_TYPE_descriptor_t asn1_DEF_Utf8_2 = {
+asn_TYPE_descriptor_t asn_DEF_Utf8_2 = {
 	"Utf8-2",
 	Utf8_2_free,
 	Utf8_2_print,
@@ -2560,12 +2560,12 @@
 	0,				/* Not implemented yet */
 	Utf8_2_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_Utf8_2_tags,
-	sizeof(asn1_DEF_Utf8_2_tags)
-		/sizeof(asn1_DEF_Utf8_2_tags[0]), /* 1 */
-	asn1_DEF_Utf8_2_tags,	/* Same as above */
-	sizeof(asn1_DEF_Utf8_2_tags)
-		/sizeof(asn1_DEF_Utf8_2_tags[0]), /* 1 */
+	asn_DEF_Utf8_2_tags,
+	sizeof(asn_DEF_Utf8_2_tags)
+		/sizeof(asn_DEF_Utf8_2_tags[0]), /* 1 */
+	asn_DEF_Utf8_2_tags,	/* Same as above */
+	sizeof(asn_DEF_Utf8_2_tags)
+		/sizeof(asn_DEF_Utf8_2_tags[0]), /* 1 */
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -2583,7 +2583,7 @@
 /*** <<< FUNC-DECLS [Utf8-1] >>> ***/
 
 /* This type is equivalent to UTF8String */
-#define	asn1_DEF_Utf8_1	asn1_DEF_UTF8String
+#define	asn_DEF_Utf8_1	asn_DEF_UTF8String
 
 /*** <<< CODE [Utf8-1] >>> ***/
 
@@ -2602,7 +2602,7 @@
 /*** <<< FUNC-DECLS [VisibleIdentifier] >>> ***/
 
 /* This type is equivalent to Identifier */
-#define	asn1_DEF_VisibleIdentifier	asn1_DEF_Identifier
+#define	asn_DEF_VisibleIdentifier	asn_DEF_Identifier
 
 /*** <<< CODE [VisibleIdentifier] >>> ***/
 
@@ -2620,7 +2620,7 @@
 
 /*** <<< FUNC-DECLS [Identifier] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_Identifier;
+extern asn_TYPE_descriptor_t asn_DEF_Identifier;
 asn_struct_free_f Identifier_free;
 asn_struct_print_f Identifier_print;
 asn_constr_check_f Identifier_constraint;
@@ -2659,7 +2659,7 @@
 /*** <<< CODE [Identifier] >>> ***/
 
 int
-Identifier_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+Identifier_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	const VisibleString_t *st = sptr;
 	size_t size;
@@ -2690,41 +2690,41 @@
  * so here we adjust the DEF accordingly.
  */
 static void
-Identifier_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
-	td->free_struct    = asn1_DEF_VisibleString.free_struct;
-	td->print_struct   = asn1_DEF_VisibleString.print_struct;
-	td->ber_decoder    = asn1_DEF_VisibleString.ber_decoder;
-	td->der_encoder    = asn1_DEF_VisibleString.der_encoder;
-	td->xer_decoder    = asn1_DEF_VisibleString.xer_decoder;
-	td->xer_encoder    = asn1_DEF_VisibleString.xer_encoder;
-	td->elements       = asn1_DEF_VisibleString.elements;
-	td->elements_count = asn1_DEF_VisibleString.elements_count;
-	td->specifics      = asn1_DEF_VisibleString.specifics;
+Identifier_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_VisibleString.free_struct;
+	td->print_struct   = asn_DEF_VisibleString.print_struct;
+	td->ber_decoder    = asn_DEF_VisibleString.ber_decoder;
+	td->der_encoder    = asn_DEF_VisibleString.der_encoder;
+	td->xer_decoder    = asn_DEF_VisibleString.xer_decoder;
+	td->xer_encoder    = asn_DEF_VisibleString.xer_encoder;
+	td->elements       = asn_DEF_VisibleString.elements;
+	td->elements_count = asn_DEF_VisibleString.elements_count;
+	td->specifics      = asn_DEF_VisibleString.specifics;
 }
 
 void
-Identifier_free(asn1_TYPE_descriptor_t *td,
+Identifier_free(asn_TYPE_descriptor_t *td,
 		void *struct_ptr, int contents_only) {
 	Identifier_inherit_TYPE_descriptor(td);
 	td->free_struct(td, struct_ptr, contents_only);
 }
 
 int
-Identifier_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
+Identifier_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
 		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
 	Identifier_inherit_TYPE_descriptor(td);
 	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
 }
 
 ber_dec_rval_t
-Identifier_decode_ber(asn1_TYPE_descriptor_t *td,
+Identifier_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		void **structure, void *bufptr, size_t size, int tag_mode) {
 	Identifier_inherit_TYPE_descriptor(td);
-	return td->ber_decoder(td, structure, bufptr, size, tag_mode);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
 }
 
 asn_enc_rval_t
-Identifier_encode_der(asn1_TYPE_descriptor_t *td,
+Identifier_encode_der(asn_TYPE_descriptor_t *td,
 		void *structure, int tag_mode, ber_tlv_tag_t tag,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	Identifier_inherit_TYPE_descriptor(td);
@@ -2732,7 +2732,7 @@
 }
 
 asn_enc_rval_t
-Identifier_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
+Identifier_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
 		int ilevel, enum xer_encoder_flags_e flags,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	Identifier_inherit_TYPE_descriptor(td);
@@ -2742,10 +2742,10 @@
 
 /*** <<< STAT-DEFS [Identifier] >>> ***/
 
-static ber_tlv_tag_t asn1_DEF_Identifier_tags[] = {
+static ber_tlv_tag_t asn_DEF_Identifier_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (26 << 2))
 };
-asn1_TYPE_descriptor_t asn1_DEF_Identifier = {
+asn_TYPE_descriptor_t asn_DEF_Identifier = {
 	"Identifier",
 	Identifier_free,
 	Identifier_print,
@@ -2755,12 +2755,12 @@
 	0,				/* Not implemented yet */
 	Identifier_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_Identifier_tags,
-	sizeof(asn1_DEF_Identifier_tags)
-		/sizeof(asn1_DEF_Identifier_tags[0]), /* 1 */
-	asn1_DEF_Identifier_tags,	/* Same as above */
-	sizeof(asn1_DEF_Identifier_tags)
-		/sizeof(asn1_DEF_Identifier_tags[0]), /* 1 */
+	asn_DEF_Identifier_tags,
+	sizeof(asn_DEF_Identifier_tags)
+		/sizeof(asn_DEF_Identifier_tags[0]), /* 1 */
+	asn_DEF_Identifier_tags,	/* Same as above */
+	sizeof(asn_DEF_Identifier_tags)
+		/sizeof(asn_DEF_Identifier_tags[0]), /* 1 */
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
diff --git a/tests/60-any-OK.asn1.-P b/tests/60-any-OK.asn1.-P
index ded466b..59aa7b1 100644
--- a/tests/60-any-OK.asn1.-P
+++ b/tests/60-any-OK.asn1.-P
@@ -7,7 +7,7 @@
 
 /*** <<< DEPS [T1] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_T1;
+extern asn_TYPE_descriptor_t asn_DEF_T1;
 
 /*** <<< TYPE-DECLS [T1] >>> ***/
 
@@ -17,42 +17,42 @@
 	ANY_t	 any;
 	
 	/* Context for parsing across buffer boundaries */
-	ber_dec_ctx_t _ber_dec_ctx;
+	asn_struct_ctx_t _asn_ctx;
 } T1_t;
 
 /*** <<< STAT-DEFS [T1] >>> ***/
 
-static asn1_TYPE_member_t asn1_MBR_T1[] = {
+static asn_TYPE_member_t asn_MBR_T1[] = {
 	{ ATF_NOFLAGS, 0, offsetof(struct T1, i),
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_INTEGER,
+		.type = (void *)&asn_DEF_INTEGER,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "i"
 		},
 	{ ATF_OPEN_TYPE | ATF_NOFLAGS, 0, offsetof(struct T1, any),
 		.tag = -1 /* Ambiguous tag (ANY?) */,
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_ANY,
+		.type = (void *)&asn_DEF_ANY,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "any"
 		},
 };
-static ber_tlv_tag_t asn1_DEF_T1_tags[] = {
+static ber_tlv_tag_t asn_DEF_T1_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn1_TYPE_tag2member_t asn1_DEF_T1_tag2el[] = {
+static asn_TYPE_tag2member_t asn_DEF_T1_tag2el[] = {
     { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* i at 15 */
 };
-static asn1_SEQUENCE_specifics_t asn1_DEF_T1_specs = {
+static asn_SEQUENCE_specifics_t asn_DEF_T1_specs = {
 	sizeof(struct T1),
-	offsetof(struct T1, _ber_dec_ctx),
-	asn1_DEF_T1_tag2el,
+	offsetof(struct T1, _asn_ctx),
+	asn_DEF_T1_tag2el,
 	1,	/* Count of tags in the map */
 	-1,	/* Start extensions */
 	-1	/* Stop extensions */
 };
-asn1_TYPE_descriptor_t asn1_DEF_T1 = {
+asn_TYPE_descriptor_t asn_DEF_T1 = {
 	"T1",
 	SEQUENCE_free,
 	SEQUENCE_print,
@@ -62,15 +62,15 @@
 	0,				/* Not implemented yet */
 	SEQUENCE_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_T1_tags,
-	sizeof(asn1_DEF_T1_tags)
-		/sizeof(asn1_DEF_T1_tags[0]), /* 1 */
-	asn1_DEF_T1_tags,	/* Same as above */
-	sizeof(asn1_DEF_T1_tags)
-		/sizeof(asn1_DEF_T1_tags[0]), /* 1 */
-	asn1_MBR_T1,
+	asn_DEF_T1_tags,
+	sizeof(asn_DEF_T1_tags)
+		/sizeof(asn_DEF_T1_tags[0]), /* 1 */
+	asn_DEF_T1_tags,	/* Same as above */
+	sizeof(asn_DEF_T1_tags)
+		/sizeof(asn_DEF_T1_tags[0]), /* 1 */
+	asn_MBR_T1,
 	2,	/* Elements count */
-	&asn1_DEF_T1_specs	/* Additional specs */
+	&asn_DEF_T1_specs	/* Additional specs */
 };
 
 
@@ -82,7 +82,7 @@
 
 /*** <<< DEPS [T2] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_T2;
+extern asn_TYPE_descriptor_t asn_DEF_T2;
 
 /*** <<< TYPE-DECLS [T2] >>> ***/
 
@@ -92,43 +92,43 @@
 	ANY_t	*any	/* OPTIONAL */;
 	
 	/* Context for parsing across buffer boundaries */
-	ber_dec_ctx_t _ber_dec_ctx;
+	asn_struct_ctx_t _asn_ctx;
 } T2_t;
 
 /*** <<< STAT-DEFS [T2] >>> ***/
 
-static asn1_TYPE_member_t asn1_MBR_T2[] = {
+static asn_TYPE_member_t asn_MBR_T2[] = {
 	{ ATF_NOFLAGS, 0, offsetof(struct T2, i),
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_INTEGER,
+		.type = (void *)&asn_DEF_INTEGER,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "i"
 		},
 	{ ATF_POINTER, 1, offsetof(struct T2, any),
 		.tag = (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 		.tag_mode = +1,	/* EXPLICIT tag at current level */
-		.type = (void *)&asn1_DEF_ANY,
+		.type = (void *)&asn_DEF_ANY,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "any"
 		},
 };
-static ber_tlv_tag_t asn1_DEF_T2_tags[] = {
+static ber_tlv_tag_t asn_DEF_T2_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn1_TYPE_tag2member_t asn1_DEF_T2_tag2el[] = {
+static asn_TYPE_tag2member_t asn_DEF_T2_tag2el[] = {
     { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* i at 20 */
     { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 1, 0, 0 }, /* any at 21 */
 };
-static asn1_SEQUENCE_specifics_t asn1_DEF_T2_specs = {
+static asn_SEQUENCE_specifics_t asn_DEF_T2_specs = {
 	sizeof(struct T2),
-	offsetof(struct T2, _ber_dec_ctx),
-	asn1_DEF_T2_tag2el,
+	offsetof(struct T2, _asn_ctx),
+	asn_DEF_T2_tag2el,
 	2,	/* Count of tags in the map */
 	-1,	/* Start extensions */
 	-1	/* Stop extensions */
 };
-asn1_TYPE_descriptor_t asn1_DEF_T2 = {
+asn_TYPE_descriptor_t asn_DEF_T2 = {
 	"T2",
 	SEQUENCE_free,
 	SEQUENCE_print,
@@ -138,14 +138,14 @@
 	0,				/* Not implemented yet */
 	SEQUENCE_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_T2_tags,
-	sizeof(asn1_DEF_T2_tags)
-		/sizeof(asn1_DEF_T2_tags[0]), /* 1 */
-	asn1_DEF_T2_tags,	/* Same as above */
-	sizeof(asn1_DEF_T2_tags)
-		/sizeof(asn1_DEF_T2_tags[0]), /* 1 */
-	asn1_MBR_T2,
+	asn_DEF_T2_tags,
+	sizeof(asn_DEF_T2_tags)
+		/sizeof(asn_DEF_T2_tags[0]), /* 1 */
+	asn_DEF_T2_tags,	/* Same as above */
+	sizeof(asn_DEF_T2_tags)
+		/sizeof(asn_DEF_T2_tags[0]), /* 1 */
+	asn_MBR_T2,
 	2,	/* Elements count */
-	&asn1_DEF_T2_specs	/* Additional specs */
+	&asn_DEF_T2_specs	/* Additional specs */
 };
 
diff --git a/tests/65-multi-tag-OK.asn1.-P b/tests/65-multi-tag-OK.asn1.-P
index 150fb21..995697e 100644
--- a/tests/65-multi-tag-OK.asn1.-P
+++ b/tests/65-multi-tag-OK.asn1.-P
@@ -10,7 +10,7 @@
 
 /*** <<< FUNC-DECLS [T1] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_T1;
+extern asn_TYPE_descriptor_t asn_DEF_T1;
 asn_struct_free_f T1_free;
 asn_struct_print_f T1_print;
 asn_constr_check_f T1_constraint;
@@ -21,10 +21,10 @@
 /*** <<< CODE [T1] >>> ***/
 
 int
-T1_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+T1_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	/* Replace with underlying type checker */
-	td->check_constraints = asn1_DEF_T2.check_constraints;
+	td->check_constraints = asn_DEF_T2.check_constraints;
 	return td->check_constraints(td, sptr, app_errlog, app_key);
 }
 
@@ -33,41 +33,41 @@
  * so here we adjust the DEF accordingly.
  */
 static void
-T1_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
-	td->free_struct    = asn1_DEF_T2.free_struct;
-	td->print_struct   = asn1_DEF_T2.print_struct;
-	td->ber_decoder    = asn1_DEF_T2.ber_decoder;
-	td->der_encoder    = asn1_DEF_T2.der_encoder;
-	td->xer_decoder    = asn1_DEF_T2.xer_decoder;
-	td->xer_encoder    = asn1_DEF_T2.xer_encoder;
-	td->elements       = asn1_DEF_T2.elements;
-	td->elements_count = asn1_DEF_T2.elements_count;
-	td->specifics      = asn1_DEF_T2.specifics;
+T1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_T2.free_struct;
+	td->print_struct   = asn_DEF_T2.print_struct;
+	td->ber_decoder    = asn_DEF_T2.ber_decoder;
+	td->der_encoder    = asn_DEF_T2.der_encoder;
+	td->xer_decoder    = asn_DEF_T2.xer_decoder;
+	td->xer_encoder    = asn_DEF_T2.xer_encoder;
+	td->elements       = asn_DEF_T2.elements;
+	td->elements_count = asn_DEF_T2.elements_count;
+	td->specifics      = asn_DEF_T2.specifics;
 }
 
 void
-T1_free(asn1_TYPE_descriptor_t *td,
+T1_free(asn_TYPE_descriptor_t *td,
 		void *struct_ptr, int contents_only) {
 	T1_inherit_TYPE_descriptor(td);
 	td->free_struct(td, struct_ptr, contents_only);
 }
 
 int
-T1_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
+T1_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
 		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
 	T1_inherit_TYPE_descriptor(td);
 	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
 }
 
 ber_dec_rval_t
-T1_decode_ber(asn1_TYPE_descriptor_t *td,
+T1_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		void **structure, void *bufptr, size_t size, int tag_mode) {
 	T1_inherit_TYPE_descriptor(td);
-	return td->ber_decoder(td, structure, bufptr, size, tag_mode);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
 }
 
 asn_enc_rval_t
-T1_encode_der(asn1_TYPE_descriptor_t *td,
+T1_encode_der(asn_TYPE_descriptor_t *td,
 		void *structure, int tag_mode, ber_tlv_tag_t tag,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	T1_inherit_TYPE_descriptor(td);
@@ -75,7 +75,7 @@
 }
 
 asn_enc_rval_t
-T1_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
+T1_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
 		int ilevel, enum xer_encoder_flags_e flags,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	T1_inherit_TYPE_descriptor(td);
@@ -85,13 +85,13 @@
 
 /*** <<< STAT-DEFS [T1] >>> ***/
 
-static ber_tlv_tag_t asn1_DEF_T1_tags[] = {
+static ber_tlv_tag_t asn_DEF_T1_tags[] = {
 	(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
 	(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
 	(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
 	(ASN_TAG_CLASS_CONTEXT | (6 << 2))
 };
-static ber_tlv_tag_t asn1_DEF_T1_all_tags[] = {
+static ber_tlv_tag_t asn_DEF_T1_all_tags[] = {
 	(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
 	(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
 	(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
@@ -99,7 +99,7 @@
 	(ASN_TAG_CLASS_CONTEXT | (6 << 2)),
 	(ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
 };
-asn1_TYPE_descriptor_t asn1_DEF_T1 = {
+asn_TYPE_descriptor_t asn_DEF_T1 = {
 	"T1",
 	T1_free,
 	T1_print,
@@ -109,12 +109,12 @@
 	0,				/* Not implemented yet */
 	T1_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_T1_tags,
-	sizeof(asn1_DEF_T1_tags)
-		/sizeof(asn1_DEF_T1_tags[0]), /* 4 */
-	asn1_DEF_T1_all_tags,
-	sizeof(asn1_DEF_T1_all_tags)
-		/sizeof(asn1_DEF_T1_all_tags[0]), /* 6 */
+	asn_DEF_T1_tags,
+	sizeof(asn_DEF_T1_tags)
+		/sizeof(asn_DEF_T1_tags[0]), /* 4 */
+	asn_DEF_T1_all_tags,
+	sizeof(asn_DEF_T1_all_tags)
+		/sizeof(asn_DEF_T1_all_tags[0]), /* 6 */
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -131,7 +131,7 @@
 
 /*** <<< FUNC-DECLS [T2] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_T2;
+extern asn_TYPE_descriptor_t asn_DEF_T2;
 asn_struct_free_f T2_free;
 asn_struct_print_f T2_print;
 asn_constr_check_f T2_constraint;
@@ -142,10 +142,10 @@
 /*** <<< CODE [T2] >>> ***/
 
 int
-T2_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+T2_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	/* Replace with underlying type checker */
-	td->check_constraints = asn1_DEF_T3.check_constraints;
+	td->check_constraints = asn_DEF_T3.check_constraints;
 	return td->check_constraints(td, sptr, app_errlog, app_key);
 }
 
@@ -154,41 +154,41 @@
  * so here we adjust the DEF accordingly.
  */
 static void
-T2_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
-	td->free_struct    = asn1_DEF_T3.free_struct;
-	td->print_struct   = asn1_DEF_T3.print_struct;
-	td->ber_decoder    = asn1_DEF_T3.ber_decoder;
-	td->der_encoder    = asn1_DEF_T3.der_encoder;
-	td->xer_decoder    = asn1_DEF_T3.xer_decoder;
-	td->xer_encoder    = asn1_DEF_T3.xer_encoder;
-	td->elements       = asn1_DEF_T3.elements;
-	td->elements_count = asn1_DEF_T3.elements_count;
-	td->specifics      = asn1_DEF_T3.specifics;
+T2_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_T3.free_struct;
+	td->print_struct   = asn_DEF_T3.print_struct;
+	td->ber_decoder    = asn_DEF_T3.ber_decoder;
+	td->der_encoder    = asn_DEF_T3.der_encoder;
+	td->xer_decoder    = asn_DEF_T3.xer_decoder;
+	td->xer_encoder    = asn_DEF_T3.xer_encoder;
+	td->elements       = asn_DEF_T3.elements;
+	td->elements_count = asn_DEF_T3.elements_count;
+	td->specifics      = asn_DEF_T3.specifics;
 }
 
 void
-T2_free(asn1_TYPE_descriptor_t *td,
+T2_free(asn_TYPE_descriptor_t *td,
 		void *struct_ptr, int contents_only) {
 	T2_inherit_TYPE_descriptor(td);
 	td->free_struct(td, struct_ptr, contents_only);
 }
 
 int
-T2_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
+T2_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
 		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
 	T2_inherit_TYPE_descriptor(td);
 	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
 }
 
 ber_dec_rval_t
-T2_decode_ber(asn1_TYPE_descriptor_t *td,
+T2_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		void **structure, void *bufptr, size_t size, int tag_mode) {
 	T2_inherit_TYPE_descriptor(td);
-	return td->ber_decoder(td, structure, bufptr, size, tag_mode);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
 }
 
 asn_enc_rval_t
-T2_encode_der(asn1_TYPE_descriptor_t *td,
+T2_encode_der(asn_TYPE_descriptor_t *td,
 		void *structure, int tag_mode, ber_tlv_tag_t tag,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	T2_inherit_TYPE_descriptor(td);
@@ -196,7 +196,7 @@
 }
 
 asn_enc_rval_t
-T2_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
+T2_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
 		int ilevel, enum xer_encoder_flags_e flags,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	T2_inherit_TYPE_descriptor(td);
@@ -206,19 +206,19 @@
 
 /*** <<< STAT-DEFS [T2] >>> ***/
 
-static ber_tlv_tag_t asn1_DEF_T2_tags[] = {
+static ber_tlv_tag_t asn_DEF_T2_tags[] = {
 	(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
 	(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
 	(ASN_TAG_CLASS_CONTEXT | (6 << 2))
 };
-static ber_tlv_tag_t asn1_DEF_T2_all_tags[] = {
+static ber_tlv_tag_t asn_DEF_T2_all_tags[] = {
 	(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
 	(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
 	(ASN_TAG_CLASS_CONTEXT | (5 << 2)),
 	(ASN_TAG_CLASS_CONTEXT | (6 << 2)),
 	(ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
 };
-asn1_TYPE_descriptor_t asn1_DEF_T2 = {
+asn_TYPE_descriptor_t asn_DEF_T2 = {
 	"T2",
 	T2_free,
 	T2_print,
@@ -228,12 +228,12 @@
 	0,				/* Not implemented yet */
 	T2_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_T2_tags,
-	sizeof(asn1_DEF_T2_tags)
-		/sizeof(asn1_DEF_T2_tags[0]), /* 3 */
-	asn1_DEF_T2_all_tags,
-	sizeof(asn1_DEF_T2_all_tags)
-		/sizeof(asn1_DEF_T2_all_tags[0]), /* 5 */
+	asn_DEF_T2_tags,
+	sizeof(asn_DEF_T2_tags)
+		/sizeof(asn_DEF_T2_tags[0]), /* 3 */
+	asn_DEF_T2_all_tags,
+	sizeof(asn_DEF_T2_all_tags)
+		/sizeof(asn_DEF_T2_all_tags[0]), /* 5 */
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -250,7 +250,7 @@
 
 /*** <<< FUNC-DECLS [T3] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_T3;
+extern asn_TYPE_descriptor_t asn_DEF_T3;
 asn_struct_free_f T3_free;
 asn_struct_print_f T3_print;
 asn_constr_check_f T3_constraint;
@@ -261,10 +261,10 @@
 /*** <<< CODE [T3] >>> ***/
 
 int
-T3_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+T3_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	/* Replace with underlying type checker */
-	td->check_constraints = asn1_DEF_T4.check_constraints;
+	td->check_constraints = asn_DEF_T4.check_constraints;
 	return td->check_constraints(td, sptr, app_errlog, app_key);
 }
 
@@ -273,41 +273,41 @@
  * so here we adjust the DEF accordingly.
  */
 static void
-T3_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
-	td->free_struct    = asn1_DEF_T4.free_struct;
-	td->print_struct   = asn1_DEF_T4.print_struct;
-	td->ber_decoder    = asn1_DEF_T4.ber_decoder;
-	td->der_encoder    = asn1_DEF_T4.der_encoder;
-	td->xer_decoder    = asn1_DEF_T4.xer_decoder;
-	td->xer_encoder    = asn1_DEF_T4.xer_encoder;
-	td->elements       = asn1_DEF_T4.elements;
-	td->elements_count = asn1_DEF_T4.elements_count;
-	td->specifics      = asn1_DEF_T4.specifics;
+T3_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_T4.free_struct;
+	td->print_struct   = asn_DEF_T4.print_struct;
+	td->ber_decoder    = asn_DEF_T4.ber_decoder;
+	td->der_encoder    = asn_DEF_T4.der_encoder;
+	td->xer_decoder    = asn_DEF_T4.xer_decoder;
+	td->xer_encoder    = asn_DEF_T4.xer_encoder;
+	td->elements       = asn_DEF_T4.elements;
+	td->elements_count = asn_DEF_T4.elements_count;
+	td->specifics      = asn_DEF_T4.specifics;
 }
 
 void
-T3_free(asn1_TYPE_descriptor_t *td,
+T3_free(asn_TYPE_descriptor_t *td,
 		void *struct_ptr, int contents_only) {
 	T3_inherit_TYPE_descriptor(td);
 	td->free_struct(td, struct_ptr, contents_only);
 }
 
 int
-T3_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
+T3_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
 		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
 	T3_inherit_TYPE_descriptor(td);
 	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
 }
 
 ber_dec_rval_t
-T3_decode_ber(asn1_TYPE_descriptor_t *td,
+T3_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		void **structure, void *bufptr, size_t size, int tag_mode) {
 	T3_inherit_TYPE_descriptor(td);
-	return td->ber_decoder(td, structure, bufptr, size, tag_mode);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
 }
 
 asn_enc_rval_t
-T3_encode_der(asn1_TYPE_descriptor_t *td,
+T3_encode_der(asn_TYPE_descriptor_t *td,
 		void *structure, int tag_mode, ber_tlv_tag_t tag,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	T3_inherit_TYPE_descriptor(td);
@@ -315,7 +315,7 @@
 }
 
 asn_enc_rval_t
-T3_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
+T3_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
 		int ilevel, enum xer_encoder_flags_e flags,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	T3_inherit_TYPE_descriptor(td);
@@ -325,17 +325,17 @@
 
 /*** <<< STAT-DEFS [T3] >>> ***/
 
-static ber_tlv_tag_t asn1_DEF_T3_tags[] = {
+static ber_tlv_tag_t asn_DEF_T3_tags[] = {
 	(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
 	(ASN_TAG_CLASS_CONTEXT | (6 << 2))
 };
-static ber_tlv_tag_t asn1_DEF_T3_all_tags[] = {
+static ber_tlv_tag_t asn_DEF_T3_all_tags[] = {
 	(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
 	(ASN_TAG_CLASS_CONTEXT | (5 << 2)),
 	(ASN_TAG_CLASS_CONTEXT | (6 << 2)),
 	(ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
 };
-asn1_TYPE_descriptor_t asn1_DEF_T3 = {
+asn_TYPE_descriptor_t asn_DEF_T3 = {
 	"T3",
 	T3_free,
 	T3_print,
@@ -345,12 +345,12 @@
 	0,				/* Not implemented yet */
 	T3_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_T3_tags,
-	sizeof(asn1_DEF_T3_tags)
-		/sizeof(asn1_DEF_T3_tags[0]), /* 2 */
-	asn1_DEF_T3_all_tags,
-	sizeof(asn1_DEF_T3_all_tags)
-		/sizeof(asn1_DEF_T3_all_tags[0]), /* 4 */
+	asn_DEF_T3_tags,
+	sizeof(asn_DEF_T3_tags)
+		/sizeof(asn_DEF_T3_tags[0]), /* 2 */
+	asn_DEF_T3_all_tags,
+	sizeof(asn_DEF_T3_all_tags)
+		/sizeof(asn_DEF_T3_all_tags[0]), /* 4 */
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -367,7 +367,7 @@
 
 /*** <<< FUNC-DECLS [T4] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_T4;
+extern asn_TYPE_descriptor_t asn_DEF_T4;
 asn_struct_free_f T4_free;
 asn_struct_print_f T4_print;
 asn_constr_check_f T4_constraint;
@@ -378,10 +378,10 @@
 /*** <<< CODE [T4] >>> ***/
 
 int
-T4_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+T4_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	/* Replace with underlying type checker */
-	td->check_constraints = asn1_DEF_T5.check_constraints;
+	td->check_constraints = asn_DEF_T5.check_constraints;
 	return td->check_constraints(td, sptr, app_errlog, app_key);
 }
 
@@ -390,41 +390,41 @@
  * so here we adjust the DEF accordingly.
  */
 static void
-T4_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
-	td->free_struct    = asn1_DEF_T5.free_struct;
-	td->print_struct   = asn1_DEF_T5.print_struct;
-	td->ber_decoder    = asn1_DEF_T5.ber_decoder;
-	td->der_encoder    = asn1_DEF_T5.der_encoder;
-	td->xer_decoder    = asn1_DEF_T5.xer_decoder;
-	td->xer_encoder    = asn1_DEF_T5.xer_encoder;
-	td->elements       = asn1_DEF_T5.elements;
-	td->elements_count = asn1_DEF_T5.elements_count;
-	td->specifics      = asn1_DEF_T5.specifics;
+T4_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_T5.free_struct;
+	td->print_struct   = asn_DEF_T5.print_struct;
+	td->ber_decoder    = asn_DEF_T5.ber_decoder;
+	td->der_encoder    = asn_DEF_T5.der_encoder;
+	td->xer_decoder    = asn_DEF_T5.xer_decoder;
+	td->xer_encoder    = asn_DEF_T5.xer_encoder;
+	td->elements       = asn_DEF_T5.elements;
+	td->elements_count = asn_DEF_T5.elements_count;
+	td->specifics      = asn_DEF_T5.specifics;
 }
 
 void
-T4_free(asn1_TYPE_descriptor_t *td,
+T4_free(asn_TYPE_descriptor_t *td,
 		void *struct_ptr, int contents_only) {
 	T4_inherit_TYPE_descriptor(td);
 	td->free_struct(td, struct_ptr, contents_only);
 }
 
 int
-T4_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
+T4_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
 		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
 	T4_inherit_TYPE_descriptor(td);
 	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
 }
 
 ber_dec_rval_t
-T4_decode_ber(asn1_TYPE_descriptor_t *td,
+T4_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		void **structure, void *bufptr, size_t size, int tag_mode) {
 	T4_inherit_TYPE_descriptor(td);
-	return td->ber_decoder(td, structure, bufptr, size, tag_mode);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
 }
 
 asn_enc_rval_t
-T4_encode_der(asn1_TYPE_descriptor_t *td,
+T4_encode_der(asn_TYPE_descriptor_t *td,
 		void *structure, int tag_mode, ber_tlv_tag_t tag,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	T4_inherit_TYPE_descriptor(td);
@@ -432,7 +432,7 @@
 }
 
 asn_enc_rval_t
-T4_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
+T4_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
 		int ilevel, enum xer_encoder_flags_e flags,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	T4_inherit_TYPE_descriptor(td);
@@ -442,12 +442,12 @@
 
 /*** <<< STAT-DEFS [T4] >>> ***/
 
-static ber_tlv_tag_t asn1_DEF_T4_tags[] = {
+static ber_tlv_tag_t asn_DEF_T4_tags[] = {
 	(ASN_TAG_CLASS_CONTEXT | (5 << 2)),
 	(ASN_TAG_CLASS_CONTEXT | (6 << 2)),
 	(ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
 };
-asn1_TYPE_descriptor_t asn1_DEF_T4 = {
+asn_TYPE_descriptor_t asn_DEF_T4 = {
 	"T4",
 	T4_free,
 	T4_print,
@@ -457,12 +457,12 @@
 	0,				/* Not implemented yet */
 	T4_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_T4_tags,
-	sizeof(asn1_DEF_T4_tags)
-		/sizeof(asn1_DEF_T4_tags[0]) - 1, /* 2 */
-	asn1_DEF_T4_tags,	/* Same as above */
-	sizeof(asn1_DEF_T4_tags)
-		/sizeof(asn1_DEF_T4_tags[0]), /* 3 */
+	asn_DEF_T4_tags,
+	sizeof(asn_DEF_T4_tags)
+		/sizeof(asn_DEF_T4_tags[0]) - 1, /* 2 */
+	asn_DEF_T4_tags,	/* Same as above */
+	sizeof(asn_DEF_T4_tags)
+		/sizeof(asn_DEF_T4_tags[0]), /* 3 */
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -479,7 +479,7 @@
 
 /*** <<< FUNC-DECLS [T5] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_T5;
+extern asn_TYPE_descriptor_t asn_DEF_T5;
 asn_struct_free_f T5_free;
 asn_struct_print_f T5_print;
 asn_constr_check_f T5_constraint;
@@ -490,10 +490,10 @@
 /*** <<< CODE [T5] >>> ***/
 
 int
-T5_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+T5_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	/* Replace with underlying type checker */
-	td->check_constraints = asn1_DEF_T6.check_constraints;
+	td->check_constraints = asn_DEF_T6.check_constraints;
 	return td->check_constraints(td, sptr, app_errlog, app_key);
 }
 
@@ -502,41 +502,41 @@
  * so here we adjust the DEF accordingly.
  */
 static void
-T5_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
-	td->free_struct    = asn1_DEF_T6.free_struct;
-	td->print_struct   = asn1_DEF_T6.print_struct;
-	td->ber_decoder    = asn1_DEF_T6.ber_decoder;
-	td->der_encoder    = asn1_DEF_T6.der_encoder;
-	td->xer_decoder    = asn1_DEF_T6.xer_decoder;
-	td->xer_encoder    = asn1_DEF_T6.xer_encoder;
-	td->elements       = asn1_DEF_T6.elements;
-	td->elements_count = asn1_DEF_T6.elements_count;
-	td->specifics      = asn1_DEF_T6.specifics;
+T5_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_T6.free_struct;
+	td->print_struct   = asn_DEF_T6.print_struct;
+	td->ber_decoder    = asn_DEF_T6.ber_decoder;
+	td->der_encoder    = asn_DEF_T6.der_encoder;
+	td->xer_decoder    = asn_DEF_T6.xer_decoder;
+	td->xer_encoder    = asn_DEF_T6.xer_encoder;
+	td->elements       = asn_DEF_T6.elements;
+	td->elements_count = asn_DEF_T6.elements_count;
+	td->specifics      = asn_DEF_T6.specifics;
 }
 
 void
-T5_free(asn1_TYPE_descriptor_t *td,
+T5_free(asn_TYPE_descriptor_t *td,
 		void *struct_ptr, int contents_only) {
 	T5_inherit_TYPE_descriptor(td);
 	td->free_struct(td, struct_ptr, contents_only);
 }
 
 int
-T5_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
+T5_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
 		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
 	T5_inherit_TYPE_descriptor(td);
 	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
 }
 
 ber_dec_rval_t
-T5_decode_ber(asn1_TYPE_descriptor_t *td,
+T5_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		void **structure, void *bufptr, size_t size, int tag_mode) {
 	T5_inherit_TYPE_descriptor(td);
-	return td->ber_decoder(td, structure, bufptr, size, tag_mode);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
 }
 
 asn_enc_rval_t
-T5_encode_der(asn1_TYPE_descriptor_t *td,
+T5_encode_der(asn_TYPE_descriptor_t *td,
 		void *structure, int tag_mode, ber_tlv_tag_t tag,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	T5_inherit_TYPE_descriptor(td);
@@ -544,7 +544,7 @@
 }
 
 asn_enc_rval_t
-T5_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
+T5_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
 		int ilevel, enum xer_encoder_flags_e flags,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	T5_inherit_TYPE_descriptor(td);
@@ -554,11 +554,11 @@
 
 /*** <<< STAT-DEFS [T5] >>> ***/
 
-static ber_tlv_tag_t asn1_DEF_T5_tags[] = {
+static ber_tlv_tag_t asn_DEF_T5_tags[] = {
 	(ASN_TAG_CLASS_CONTEXT | (6 << 2)),
 	(ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
 };
-asn1_TYPE_descriptor_t asn1_DEF_T5 = {
+asn_TYPE_descriptor_t asn_DEF_T5 = {
 	"T5",
 	T5_free,
 	T5_print,
@@ -568,12 +568,12 @@
 	0,				/* Not implemented yet */
 	T5_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_T5_tags,
-	sizeof(asn1_DEF_T5_tags)
-		/sizeof(asn1_DEF_T5_tags[0]) - 1, /* 1 */
-	asn1_DEF_T5_tags,	/* Same as above */
-	sizeof(asn1_DEF_T5_tags)
-		/sizeof(asn1_DEF_T5_tags[0]), /* 2 */
+	asn_DEF_T5_tags,
+	sizeof(asn_DEF_T5_tags)
+		/sizeof(asn_DEF_T5_tags[0]) - 1, /* 1 */
+	asn_DEF_T5_tags,	/* Same as above */
+	sizeof(asn_DEF_T5_tags)
+		/sizeof(asn_DEF_T5_tags[0]), /* 2 */
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -591,7 +591,7 @@
 /*** <<< FUNC-DECLS [T6] >>> ***/
 
 /* This type is equivalent to REAL */
-#define	asn1_DEF_T6	asn1_DEF_REAL
+#define	asn_DEF_T6	asn_DEF_REAL
 
 /*** <<< CODE [T6] >>> ***/
 
@@ -609,7 +609,7 @@
 
 /*** <<< FUNC-DECLS [T] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_T;
+extern asn_TYPE_descriptor_t asn_DEF_T;
 asn_struct_free_f T_free;
 asn_struct_print_f T_print;
 asn_constr_check_f T_constraint;
@@ -620,10 +620,10 @@
 /*** <<< CODE [T] >>> ***/
 
 int
-T_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+T_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	/* Replace with underlying type checker */
-	td->check_constraints = asn1_DEF_Ts.check_constraints;
+	td->check_constraints = asn_DEF_Ts.check_constraints;
 	return td->check_constraints(td, sptr, app_errlog, app_key);
 }
 
@@ -632,41 +632,41 @@
  * so here we adjust the DEF accordingly.
  */
 static void
-T_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
-	td->free_struct    = asn1_DEF_Ts.free_struct;
-	td->print_struct   = asn1_DEF_Ts.print_struct;
-	td->ber_decoder    = asn1_DEF_Ts.ber_decoder;
-	td->der_encoder    = asn1_DEF_Ts.der_encoder;
-	td->xer_decoder    = asn1_DEF_Ts.xer_decoder;
-	td->xer_encoder    = asn1_DEF_Ts.xer_encoder;
-	td->elements       = asn1_DEF_Ts.elements;
-	td->elements_count = asn1_DEF_Ts.elements_count;
-	td->specifics      = asn1_DEF_Ts.specifics;
+T_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_Ts.free_struct;
+	td->print_struct   = asn_DEF_Ts.print_struct;
+	td->ber_decoder    = asn_DEF_Ts.ber_decoder;
+	td->der_encoder    = asn_DEF_Ts.der_encoder;
+	td->xer_decoder    = asn_DEF_Ts.xer_decoder;
+	td->xer_encoder    = asn_DEF_Ts.xer_encoder;
+	td->elements       = asn_DEF_Ts.elements;
+	td->elements_count = asn_DEF_Ts.elements_count;
+	td->specifics      = asn_DEF_Ts.specifics;
 }
 
 void
-T_free(asn1_TYPE_descriptor_t *td,
+T_free(asn_TYPE_descriptor_t *td,
 		void *struct_ptr, int contents_only) {
 	T_inherit_TYPE_descriptor(td);
 	td->free_struct(td, struct_ptr, contents_only);
 }
 
 int
-T_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
+T_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
 		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
 	T_inherit_TYPE_descriptor(td);
 	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
 }
 
 ber_dec_rval_t
-T_decode_ber(asn1_TYPE_descriptor_t *td,
+T_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		void **structure, void *bufptr, size_t size, int tag_mode) {
 	T_inherit_TYPE_descriptor(td);
-	return td->ber_decoder(td, structure, bufptr, size, tag_mode);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
 }
 
 asn_enc_rval_t
-T_encode_der(asn1_TYPE_descriptor_t *td,
+T_encode_der(asn_TYPE_descriptor_t *td,
 		void *structure, int tag_mode, ber_tlv_tag_t tag,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	T_inherit_TYPE_descriptor(td);
@@ -674,7 +674,7 @@
 }
 
 asn_enc_rval_t
-T_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
+T_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
 		int ilevel, enum xer_encoder_flags_e flags,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	T_inherit_TYPE_descriptor(td);
@@ -684,12 +684,12 @@
 
 /*** <<< STAT-DEFS [T] >>> ***/
 
-static ber_tlv_tag_t asn1_DEF_T_tags[] = {
+static ber_tlv_tag_t asn_DEF_T_tags[] = {
 	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 	(ASN_TAG_CLASS_CONTEXT | (123 << 2)),
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-asn1_TYPE_descriptor_t asn1_DEF_T = {
+asn_TYPE_descriptor_t asn_DEF_T = {
 	"T",
 	T_free,
 	T_print,
@@ -699,12 +699,12 @@
 	0,				/* Not implemented yet */
 	T_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_T_tags,
-	sizeof(asn1_DEF_T_tags)
-		/sizeof(asn1_DEF_T_tags[0]) - 2, /* 1 */
-	asn1_DEF_T_tags,	/* Same as above */
-	sizeof(asn1_DEF_T_tags)
-		/sizeof(asn1_DEF_T_tags[0]), /* 3 */
+	asn_DEF_T_tags,
+	sizeof(asn_DEF_T_tags)
+		/sizeof(asn_DEF_T_tags[0]) - 2, /* 1 */
+	asn_DEF_T_tags,	/* Same as above */
+	sizeof(asn_DEF_T_tags)
+		/sizeof(asn_DEF_T_tags[0]), /* 3 */
 	0, 0,	/* Defined elsewhere */
 	0	/* No specifics */
 };
@@ -718,7 +718,7 @@
 
 /*** <<< DEPS [Ts] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_Ts;
+extern asn_TYPE_descriptor_t asn_DEF_Ts;
 
 /*** <<< TYPE-DECLS [Ts] >>> ***/
 
@@ -729,52 +729,52 @@
 	T3_t	 m3;
 	
 	/* Context for parsing across buffer boundaries */
-	ber_dec_ctx_t _ber_dec_ctx;
+	asn_struct_ctx_t _asn_ctx;
 } Ts_t;
 
 /*** <<< STAT-DEFS [Ts] >>> ***/
 
-static asn1_TYPE_member_t asn1_MBR_Ts[] = {
+static asn_TYPE_member_t asn_MBR_Ts[] = {
 	{ ATF_NOFLAGS, 0, offsetof(struct Ts, m1),
 		.tag = (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
 		.tag_mode = -1,	/* IMPLICIT tag at current level */
-		.type = (void *)&asn1_DEF_T2,
+		.type = (void *)&asn_DEF_T2,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "m1"
 		},
 	{ ATF_POINTER, 1, offsetof(struct Ts, m2),
 		.tag = (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
 		.tag_mode = +1,	/* EXPLICIT tag at current level */
-		.type = (void *)&asn1_DEF_T3,
+		.type = (void *)&asn_DEF_T3,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "m2"
 		},
 	{ ATF_NOFLAGS, 0, offsetof(struct Ts, m3),
 		.tag = (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
 		.tag_mode = -1,	/* IMPLICIT tag at current level */
-		.type = (void *)&asn1_DEF_T3,
+		.type = (void *)&asn_DEF_T3,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "m3"
 		},
 };
-static ber_tlv_tag_t asn1_DEF_Ts_tags[] = {
+static ber_tlv_tag_t asn_DEF_Ts_tags[] = {
 	(ASN_TAG_CLASS_CONTEXT | (123 << 2)),
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn1_TYPE_tag2member_t asn1_DEF_Ts_tag2el[] = {
+static asn_TYPE_tag2member_t asn_DEF_Ts_tag2el[] = {
     { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 }, /* m1 at 24 */
     { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* m2 at 25 */
     { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 }, /* m3 at 27 */
 };
-static asn1_SEQUENCE_specifics_t asn1_DEF_Ts_specs = {
+static asn_SEQUENCE_specifics_t asn_DEF_Ts_specs = {
 	sizeof(struct Ts),
-	offsetof(struct Ts, _ber_dec_ctx),
-	asn1_DEF_Ts_tag2el,
+	offsetof(struct Ts, _asn_ctx),
+	asn_DEF_Ts_tag2el,
 	3,	/* Count of tags in the map */
 	-1,	/* Start extensions */
 	-1	/* Stop extensions */
 };
-asn1_TYPE_descriptor_t asn1_DEF_Ts = {
+asn_TYPE_descriptor_t asn_DEF_Ts = {
 	"Ts",
 	SEQUENCE_free,
 	SEQUENCE_print,
@@ -784,14 +784,14 @@
 	0,				/* Not implemented yet */
 	SEQUENCE_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_Ts_tags,
-	sizeof(asn1_DEF_Ts_tags)
-		/sizeof(asn1_DEF_Ts_tags[0]) - 1, /* 1 */
-	asn1_DEF_Ts_tags,	/* Same as above */
-	sizeof(asn1_DEF_Ts_tags)
-		/sizeof(asn1_DEF_Ts_tags[0]), /* 2 */
-	asn1_MBR_Ts,
+	asn_DEF_Ts_tags,
+	sizeof(asn_DEF_Ts_tags)
+		/sizeof(asn_DEF_Ts_tags[0]) - 1, /* 1 */
+	asn_DEF_Ts_tags,	/* Same as above */
+	sizeof(asn_DEF_Ts_tags)
+		/sizeof(asn_DEF_Ts_tags[0]), /* 2 */
+	asn_MBR_Ts,
 	3,	/* Elements count */
-	&asn1_DEF_Ts_specs	/* Additional specs */
+	&asn_DEF_Ts_specs	/* Additional specs */
 };
 
diff --git a/tests/65-multi-tag-OK.asn1.-Pfnative-types b/tests/65-multi-tag-OK.asn1.-Pfnative-types
index f12b902..faed7c6 100644
--- a/tests/65-multi-tag-OK.asn1.-Pfnative-types
+++ b/tests/65-multi-tag-OK.asn1.-Pfnative-types
@@ -10,7 +10,7 @@
 
 /*** <<< FUNC-DECLS [T1] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_T1;
+extern asn_TYPE_descriptor_t asn_DEF_T1;
 asn_struct_free_f T1_free;
 asn_struct_print_f T1_print;
 asn_constr_check_f T1_constraint;
@@ -21,10 +21,10 @@
 /*** <<< CODE [T1] >>> ***/
 
 int
-T1_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+T1_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	/* Replace with underlying type checker */
-	td->check_constraints = asn1_DEF_T2.check_constraints;
+	td->check_constraints = asn_DEF_T2.check_constraints;
 	return td->check_constraints(td, sptr, app_errlog, app_key);
 }
 
@@ -33,41 +33,41 @@
  * so here we adjust the DEF accordingly.
  */
 static void
-T1_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
-	td->free_struct    = asn1_DEF_T2.free_struct;
-	td->print_struct   = asn1_DEF_T2.print_struct;
-	td->ber_decoder    = asn1_DEF_T2.ber_decoder;
-	td->der_encoder    = asn1_DEF_T2.der_encoder;
-	td->xer_decoder    = asn1_DEF_T2.xer_decoder;
-	td->xer_encoder    = asn1_DEF_T2.xer_encoder;
-	td->elements       = asn1_DEF_T2.elements;
-	td->elements_count = asn1_DEF_T2.elements_count;
-	td->specifics      = asn1_DEF_T2.specifics;
+T1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_T2.free_struct;
+	td->print_struct   = asn_DEF_T2.print_struct;
+	td->ber_decoder    = asn_DEF_T2.ber_decoder;
+	td->der_encoder    = asn_DEF_T2.der_encoder;
+	td->xer_decoder    = asn_DEF_T2.xer_decoder;
+	td->xer_encoder    = asn_DEF_T2.xer_encoder;
+	td->elements       = asn_DEF_T2.elements;
+	td->elements_count = asn_DEF_T2.elements_count;
+	td->specifics      = asn_DEF_T2.specifics;
 }
 
 void
-T1_free(asn1_TYPE_descriptor_t *td,
+T1_free(asn_TYPE_descriptor_t *td,
 		void *struct_ptr, int contents_only) {
 	T1_inherit_TYPE_descriptor(td);
 	td->free_struct(td, struct_ptr, contents_only);
 }
 
 int
-T1_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
+T1_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
 		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
 	T1_inherit_TYPE_descriptor(td);
 	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
 }
 
 ber_dec_rval_t
-T1_decode_ber(asn1_TYPE_descriptor_t *td,
+T1_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		void **structure, void *bufptr, size_t size, int tag_mode) {
 	T1_inherit_TYPE_descriptor(td);
-	return td->ber_decoder(td, structure, bufptr, size, tag_mode);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
 }
 
 asn_enc_rval_t
-T1_encode_der(asn1_TYPE_descriptor_t *td,
+T1_encode_der(asn_TYPE_descriptor_t *td,
 		void *structure, int tag_mode, ber_tlv_tag_t tag,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	T1_inherit_TYPE_descriptor(td);
@@ -75,7 +75,7 @@
 }
 
 asn_enc_rval_t
-T1_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
+T1_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
 		int ilevel, enum xer_encoder_flags_e flags,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	T1_inherit_TYPE_descriptor(td);
@@ -85,13 +85,13 @@
 
 /*** <<< STAT-DEFS [T1] >>> ***/
 
-static ber_tlv_tag_t asn1_DEF_T1_tags[] = {
+static ber_tlv_tag_t asn_DEF_T1_tags[] = {
 	(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
 	(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
 	(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
 	(ASN_TAG_CLASS_CONTEXT | (6 << 2))
 };
-static ber_tlv_tag_t asn1_DEF_T1_all_tags[] = {
+static ber_tlv_tag_t asn_DEF_T1_all_tags[] = {
 	(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
 	(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
 	(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
@@ -99,7 +99,7 @@
 	(ASN_TAG_CLASS_CONTEXT | (6 << 2)),
 	(ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
 };
-asn1_TYPE_descriptor_t asn1_DEF_T1 = {
+asn_TYPE_descriptor_t asn_DEF_T1 = {
 	"T1",
 	T1_free,
 	T1_print,
@@ -109,12 +109,12 @@
 	0,				/* Not implemented yet */
 	T1_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_T1_tags,
-	sizeof(asn1_DEF_T1_tags)
-		/sizeof(asn1_DEF_T1_tags[0]), /* 4 */
-	asn1_DEF_T1_all_tags,
-	sizeof(asn1_DEF_T1_all_tags)
-		/sizeof(asn1_DEF_T1_all_tags[0]), /* 6 */
+	asn_DEF_T1_tags,
+	sizeof(asn_DEF_T1_tags)
+		/sizeof(asn_DEF_T1_tags[0]), /* 4 */
+	asn_DEF_T1_all_tags,
+	sizeof(asn_DEF_T1_all_tags)
+		/sizeof(asn_DEF_T1_all_tags[0]), /* 6 */
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -131,7 +131,7 @@
 
 /*** <<< FUNC-DECLS [T2] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_T2;
+extern asn_TYPE_descriptor_t asn_DEF_T2;
 asn_struct_free_f T2_free;
 asn_struct_print_f T2_print;
 asn_constr_check_f T2_constraint;
@@ -142,10 +142,10 @@
 /*** <<< CODE [T2] >>> ***/
 
 int
-T2_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+T2_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	/* Replace with underlying type checker */
-	td->check_constraints = asn1_DEF_T3.check_constraints;
+	td->check_constraints = asn_DEF_T3.check_constraints;
 	return td->check_constraints(td, sptr, app_errlog, app_key);
 }
 
@@ -154,41 +154,41 @@
  * so here we adjust the DEF accordingly.
  */
 static void
-T2_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
-	td->free_struct    = asn1_DEF_T3.free_struct;
-	td->print_struct   = asn1_DEF_T3.print_struct;
-	td->ber_decoder    = asn1_DEF_T3.ber_decoder;
-	td->der_encoder    = asn1_DEF_T3.der_encoder;
-	td->xer_decoder    = asn1_DEF_T3.xer_decoder;
-	td->xer_encoder    = asn1_DEF_T3.xer_encoder;
-	td->elements       = asn1_DEF_T3.elements;
-	td->elements_count = asn1_DEF_T3.elements_count;
-	td->specifics      = asn1_DEF_T3.specifics;
+T2_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_T3.free_struct;
+	td->print_struct   = asn_DEF_T3.print_struct;
+	td->ber_decoder    = asn_DEF_T3.ber_decoder;
+	td->der_encoder    = asn_DEF_T3.der_encoder;
+	td->xer_decoder    = asn_DEF_T3.xer_decoder;
+	td->xer_encoder    = asn_DEF_T3.xer_encoder;
+	td->elements       = asn_DEF_T3.elements;
+	td->elements_count = asn_DEF_T3.elements_count;
+	td->specifics      = asn_DEF_T3.specifics;
 }
 
 void
-T2_free(asn1_TYPE_descriptor_t *td,
+T2_free(asn_TYPE_descriptor_t *td,
 		void *struct_ptr, int contents_only) {
 	T2_inherit_TYPE_descriptor(td);
 	td->free_struct(td, struct_ptr, contents_only);
 }
 
 int
-T2_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
+T2_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
 		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
 	T2_inherit_TYPE_descriptor(td);
 	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
 }
 
 ber_dec_rval_t
-T2_decode_ber(asn1_TYPE_descriptor_t *td,
+T2_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		void **structure, void *bufptr, size_t size, int tag_mode) {
 	T2_inherit_TYPE_descriptor(td);
-	return td->ber_decoder(td, structure, bufptr, size, tag_mode);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
 }
 
 asn_enc_rval_t
-T2_encode_der(asn1_TYPE_descriptor_t *td,
+T2_encode_der(asn_TYPE_descriptor_t *td,
 		void *structure, int tag_mode, ber_tlv_tag_t tag,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	T2_inherit_TYPE_descriptor(td);
@@ -196,7 +196,7 @@
 }
 
 asn_enc_rval_t
-T2_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
+T2_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
 		int ilevel, enum xer_encoder_flags_e flags,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	T2_inherit_TYPE_descriptor(td);
@@ -206,19 +206,19 @@
 
 /*** <<< STAT-DEFS [T2] >>> ***/
 
-static ber_tlv_tag_t asn1_DEF_T2_tags[] = {
+static ber_tlv_tag_t asn_DEF_T2_tags[] = {
 	(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
 	(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
 	(ASN_TAG_CLASS_CONTEXT | (6 << 2))
 };
-static ber_tlv_tag_t asn1_DEF_T2_all_tags[] = {
+static ber_tlv_tag_t asn_DEF_T2_all_tags[] = {
 	(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
 	(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
 	(ASN_TAG_CLASS_CONTEXT | (5 << 2)),
 	(ASN_TAG_CLASS_CONTEXT | (6 << 2)),
 	(ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
 };
-asn1_TYPE_descriptor_t asn1_DEF_T2 = {
+asn_TYPE_descriptor_t asn_DEF_T2 = {
 	"T2",
 	T2_free,
 	T2_print,
@@ -228,12 +228,12 @@
 	0,				/* Not implemented yet */
 	T2_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_T2_tags,
-	sizeof(asn1_DEF_T2_tags)
-		/sizeof(asn1_DEF_T2_tags[0]), /* 3 */
-	asn1_DEF_T2_all_tags,
-	sizeof(asn1_DEF_T2_all_tags)
-		/sizeof(asn1_DEF_T2_all_tags[0]), /* 5 */
+	asn_DEF_T2_tags,
+	sizeof(asn_DEF_T2_tags)
+		/sizeof(asn_DEF_T2_tags[0]), /* 3 */
+	asn_DEF_T2_all_tags,
+	sizeof(asn_DEF_T2_all_tags)
+		/sizeof(asn_DEF_T2_all_tags[0]), /* 5 */
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -250,7 +250,7 @@
 
 /*** <<< FUNC-DECLS [T3] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_T3;
+extern asn_TYPE_descriptor_t asn_DEF_T3;
 asn_struct_free_f T3_free;
 asn_struct_print_f T3_print;
 asn_constr_check_f T3_constraint;
@@ -261,10 +261,10 @@
 /*** <<< CODE [T3] >>> ***/
 
 int
-T3_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+T3_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	/* Replace with underlying type checker */
-	td->check_constraints = asn1_DEF_T4.check_constraints;
+	td->check_constraints = asn_DEF_T4.check_constraints;
 	return td->check_constraints(td, sptr, app_errlog, app_key);
 }
 
@@ -273,41 +273,41 @@
  * so here we adjust the DEF accordingly.
  */
 static void
-T3_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
-	td->free_struct    = asn1_DEF_T4.free_struct;
-	td->print_struct   = asn1_DEF_T4.print_struct;
-	td->ber_decoder    = asn1_DEF_T4.ber_decoder;
-	td->der_encoder    = asn1_DEF_T4.der_encoder;
-	td->xer_decoder    = asn1_DEF_T4.xer_decoder;
-	td->xer_encoder    = asn1_DEF_T4.xer_encoder;
-	td->elements       = asn1_DEF_T4.elements;
-	td->elements_count = asn1_DEF_T4.elements_count;
-	td->specifics      = asn1_DEF_T4.specifics;
+T3_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_T4.free_struct;
+	td->print_struct   = asn_DEF_T4.print_struct;
+	td->ber_decoder    = asn_DEF_T4.ber_decoder;
+	td->der_encoder    = asn_DEF_T4.der_encoder;
+	td->xer_decoder    = asn_DEF_T4.xer_decoder;
+	td->xer_encoder    = asn_DEF_T4.xer_encoder;
+	td->elements       = asn_DEF_T4.elements;
+	td->elements_count = asn_DEF_T4.elements_count;
+	td->specifics      = asn_DEF_T4.specifics;
 }
 
 void
-T3_free(asn1_TYPE_descriptor_t *td,
+T3_free(asn_TYPE_descriptor_t *td,
 		void *struct_ptr, int contents_only) {
 	T3_inherit_TYPE_descriptor(td);
 	td->free_struct(td, struct_ptr, contents_only);
 }
 
 int
-T3_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
+T3_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
 		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
 	T3_inherit_TYPE_descriptor(td);
 	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
 }
 
 ber_dec_rval_t
-T3_decode_ber(asn1_TYPE_descriptor_t *td,
+T3_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		void **structure, void *bufptr, size_t size, int tag_mode) {
 	T3_inherit_TYPE_descriptor(td);
-	return td->ber_decoder(td, structure, bufptr, size, tag_mode);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
 }
 
 asn_enc_rval_t
-T3_encode_der(asn1_TYPE_descriptor_t *td,
+T3_encode_der(asn_TYPE_descriptor_t *td,
 		void *structure, int tag_mode, ber_tlv_tag_t tag,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	T3_inherit_TYPE_descriptor(td);
@@ -315,7 +315,7 @@
 }
 
 asn_enc_rval_t
-T3_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
+T3_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
 		int ilevel, enum xer_encoder_flags_e flags,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	T3_inherit_TYPE_descriptor(td);
@@ -325,17 +325,17 @@
 
 /*** <<< STAT-DEFS [T3] >>> ***/
 
-static ber_tlv_tag_t asn1_DEF_T3_tags[] = {
+static ber_tlv_tag_t asn_DEF_T3_tags[] = {
 	(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
 	(ASN_TAG_CLASS_CONTEXT | (6 << 2))
 };
-static ber_tlv_tag_t asn1_DEF_T3_all_tags[] = {
+static ber_tlv_tag_t asn_DEF_T3_all_tags[] = {
 	(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
 	(ASN_TAG_CLASS_CONTEXT | (5 << 2)),
 	(ASN_TAG_CLASS_CONTEXT | (6 << 2)),
 	(ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
 };
-asn1_TYPE_descriptor_t asn1_DEF_T3 = {
+asn_TYPE_descriptor_t asn_DEF_T3 = {
 	"T3",
 	T3_free,
 	T3_print,
@@ -345,12 +345,12 @@
 	0,				/* Not implemented yet */
 	T3_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_T3_tags,
-	sizeof(asn1_DEF_T3_tags)
-		/sizeof(asn1_DEF_T3_tags[0]), /* 2 */
-	asn1_DEF_T3_all_tags,
-	sizeof(asn1_DEF_T3_all_tags)
-		/sizeof(asn1_DEF_T3_all_tags[0]), /* 4 */
+	asn_DEF_T3_tags,
+	sizeof(asn_DEF_T3_tags)
+		/sizeof(asn_DEF_T3_tags[0]), /* 2 */
+	asn_DEF_T3_all_tags,
+	sizeof(asn_DEF_T3_all_tags)
+		/sizeof(asn_DEF_T3_all_tags[0]), /* 4 */
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -367,7 +367,7 @@
 
 /*** <<< FUNC-DECLS [T4] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_T4;
+extern asn_TYPE_descriptor_t asn_DEF_T4;
 asn_struct_free_f T4_free;
 asn_struct_print_f T4_print;
 asn_constr_check_f T4_constraint;
@@ -378,10 +378,10 @@
 /*** <<< CODE [T4] >>> ***/
 
 int
-T4_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+T4_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	/* Replace with underlying type checker */
-	td->check_constraints = asn1_DEF_T5.check_constraints;
+	td->check_constraints = asn_DEF_T5.check_constraints;
 	return td->check_constraints(td, sptr, app_errlog, app_key);
 }
 
@@ -390,41 +390,41 @@
  * so here we adjust the DEF accordingly.
  */
 static void
-T4_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
-	td->free_struct    = asn1_DEF_T5.free_struct;
-	td->print_struct   = asn1_DEF_T5.print_struct;
-	td->ber_decoder    = asn1_DEF_T5.ber_decoder;
-	td->der_encoder    = asn1_DEF_T5.der_encoder;
-	td->xer_decoder    = asn1_DEF_T5.xer_decoder;
-	td->xer_encoder    = asn1_DEF_T5.xer_encoder;
-	td->elements       = asn1_DEF_T5.elements;
-	td->elements_count = asn1_DEF_T5.elements_count;
-	td->specifics      = asn1_DEF_T5.specifics;
+T4_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_T5.free_struct;
+	td->print_struct   = asn_DEF_T5.print_struct;
+	td->ber_decoder    = asn_DEF_T5.ber_decoder;
+	td->der_encoder    = asn_DEF_T5.der_encoder;
+	td->xer_decoder    = asn_DEF_T5.xer_decoder;
+	td->xer_encoder    = asn_DEF_T5.xer_encoder;
+	td->elements       = asn_DEF_T5.elements;
+	td->elements_count = asn_DEF_T5.elements_count;
+	td->specifics      = asn_DEF_T5.specifics;
 }
 
 void
-T4_free(asn1_TYPE_descriptor_t *td,
+T4_free(asn_TYPE_descriptor_t *td,
 		void *struct_ptr, int contents_only) {
 	T4_inherit_TYPE_descriptor(td);
 	td->free_struct(td, struct_ptr, contents_only);
 }
 
 int
-T4_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
+T4_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
 		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
 	T4_inherit_TYPE_descriptor(td);
 	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
 }
 
 ber_dec_rval_t
-T4_decode_ber(asn1_TYPE_descriptor_t *td,
+T4_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		void **structure, void *bufptr, size_t size, int tag_mode) {
 	T4_inherit_TYPE_descriptor(td);
-	return td->ber_decoder(td, structure, bufptr, size, tag_mode);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
 }
 
 asn_enc_rval_t
-T4_encode_der(asn1_TYPE_descriptor_t *td,
+T4_encode_der(asn_TYPE_descriptor_t *td,
 		void *structure, int tag_mode, ber_tlv_tag_t tag,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	T4_inherit_TYPE_descriptor(td);
@@ -432,7 +432,7 @@
 }
 
 asn_enc_rval_t
-T4_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
+T4_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
 		int ilevel, enum xer_encoder_flags_e flags,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	T4_inherit_TYPE_descriptor(td);
@@ -442,12 +442,12 @@
 
 /*** <<< STAT-DEFS [T4] >>> ***/
 
-static ber_tlv_tag_t asn1_DEF_T4_tags[] = {
+static ber_tlv_tag_t asn_DEF_T4_tags[] = {
 	(ASN_TAG_CLASS_CONTEXT | (5 << 2)),
 	(ASN_TAG_CLASS_CONTEXT | (6 << 2)),
 	(ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
 };
-asn1_TYPE_descriptor_t asn1_DEF_T4 = {
+asn_TYPE_descriptor_t asn_DEF_T4 = {
 	"T4",
 	T4_free,
 	T4_print,
@@ -457,12 +457,12 @@
 	0,				/* Not implemented yet */
 	T4_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_T4_tags,
-	sizeof(asn1_DEF_T4_tags)
-		/sizeof(asn1_DEF_T4_tags[0]) - 1, /* 2 */
-	asn1_DEF_T4_tags,	/* Same as above */
-	sizeof(asn1_DEF_T4_tags)
-		/sizeof(asn1_DEF_T4_tags[0]), /* 3 */
+	asn_DEF_T4_tags,
+	sizeof(asn_DEF_T4_tags)
+		/sizeof(asn_DEF_T4_tags[0]) - 1, /* 2 */
+	asn_DEF_T4_tags,	/* Same as above */
+	sizeof(asn_DEF_T4_tags)
+		/sizeof(asn_DEF_T4_tags[0]), /* 3 */
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -479,7 +479,7 @@
 
 /*** <<< FUNC-DECLS [T5] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_T5;
+extern asn_TYPE_descriptor_t asn_DEF_T5;
 asn_struct_free_f T5_free;
 asn_struct_print_f T5_print;
 asn_constr_check_f T5_constraint;
@@ -490,10 +490,10 @@
 /*** <<< CODE [T5] >>> ***/
 
 int
-T5_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+T5_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	/* Replace with underlying type checker */
-	td->check_constraints = asn1_DEF_T6.check_constraints;
+	td->check_constraints = asn_DEF_T6.check_constraints;
 	return td->check_constraints(td, sptr, app_errlog, app_key);
 }
 
@@ -502,41 +502,41 @@
  * so here we adjust the DEF accordingly.
  */
 static void
-T5_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
-	td->free_struct    = asn1_DEF_T6.free_struct;
-	td->print_struct   = asn1_DEF_T6.print_struct;
-	td->ber_decoder    = asn1_DEF_T6.ber_decoder;
-	td->der_encoder    = asn1_DEF_T6.der_encoder;
-	td->xer_decoder    = asn1_DEF_T6.xer_decoder;
-	td->xer_encoder    = asn1_DEF_T6.xer_encoder;
-	td->elements       = asn1_DEF_T6.elements;
-	td->elements_count = asn1_DEF_T6.elements_count;
-	td->specifics      = asn1_DEF_T6.specifics;
+T5_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_T6.free_struct;
+	td->print_struct   = asn_DEF_T6.print_struct;
+	td->ber_decoder    = asn_DEF_T6.ber_decoder;
+	td->der_encoder    = asn_DEF_T6.der_encoder;
+	td->xer_decoder    = asn_DEF_T6.xer_decoder;
+	td->xer_encoder    = asn_DEF_T6.xer_encoder;
+	td->elements       = asn_DEF_T6.elements;
+	td->elements_count = asn_DEF_T6.elements_count;
+	td->specifics      = asn_DEF_T6.specifics;
 }
 
 void
-T5_free(asn1_TYPE_descriptor_t *td,
+T5_free(asn_TYPE_descriptor_t *td,
 		void *struct_ptr, int contents_only) {
 	T5_inherit_TYPE_descriptor(td);
 	td->free_struct(td, struct_ptr, contents_only);
 }
 
 int
-T5_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
+T5_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
 		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
 	T5_inherit_TYPE_descriptor(td);
 	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
 }
 
 ber_dec_rval_t
-T5_decode_ber(asn1_TYPE_descriptor_t *td,
+T5_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		void **structure, void *bufptr, size_t size, int tag_mode) {
 	T5_inherit_TYPE_descriptor(td);
-	return td->ber_decoder(td, structure, bufptr, size, tag_mode);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
 }
 
 asn_enc_rval_t
-T5_encode_der(asn1_TYPE_descriptor_t *td,
+T5_encode_der(asn_TYPE_descriptor_t *td,
 		void *structure, int tag_mode, ber_tlv_tag_t tag,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	T5_inherit_TYPE_descriptor(td);
@@ -544,7 +544,7 @@
 }
 
 asn_enc_rval_t
-T5_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
+T5_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
 		int ilevel, enum xer_encoder_flags_e flags,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	T5_inherit_TYPE_descriptor(td);
@@ -554,11 +554,11 @@
 
 /*** <<< STAT-DEFS [T5] >>> ***/
 
-static ber_tlv_tag_t asn1_DEF_T5_tags[] = {
+static ber_tlv_tag_t asn_DEF_T5_tags[] = {
 	(ASN_TAG_CLASS_CONTEXT | (6 << 2)),
 	(ASN_TAG_CLASS_UNIVERSAL | (9 << 2))
 };
-asn1_TYPE_descriptor_t asn1_DEF_T5 = {
+asn_TYPE_descriptor_t asn_DEF_T5 = {
 	"T5",
 	T5_free,
 	T5_print,
@@ -568,12 +568,12 @@
 	0,				/* Not implemented yet */
 	T5_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_T5_tags,
-	sizeof(asn1_DEF_T5_tags)
-		/sizeof(asn1_DEF_T5_tags[0]) - 1, /* 1 */
-	asn1_DEF_T5_tags,	/* Same as above */
-	sizeof(asn1_DEF_T5_tags)
-		/sizeof(asn1_DEF_T5_tags[0]), /* 2 */
+	asn_DEF_T5_tags,
+	sizeof(asn_DEF_T5_tags)
+		/sizeof(asn_DEF_T5_tags[0]) - 1, /* 1 */
+	asn_DEF_T5_tags,	/* Same as above */
+	sizeof(asn_DEF_T5_tags)
+		/sizeof(asn_DEF_T5_tags[0]), /* 2 */
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -591,7 +591,7 @@
 /*** <<< FUNC-DECLS [T6] >>> ***/
 
 /* This type is equivalent to NativeReal */
-#define	asn1_DEF_T6	asn1_DEF_NativeReal
+#define	asn_DEF_T6	asn_DEF_NativeReal
 
 /*** <<< CODE [T6] >>> ***/
 
@@ -609,7 +609,7 @@
 
 /*** <<< FUNC-DECLS [T] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_T;
+extern asn_TYPE_descriptor_t asn_DEF_T;
 asn_struct_free_f T_free;
 asn_struct_print_f T_print;
 asn_constr_check_f T_constraint;
@@ -620,10 +620,10 @@
 /*** <<< CODE [T] >>> ***/
 
 int
-T_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+T_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	/* Replace with underlying type checker */
-	td->check_constraints = asn1_DEF_Ts.check_constraints;
+	td->check_constraints = asn_DEF_Ts.check_constraints;
 	return td->check_constraints(td, sptr, app_errlog, app_key);
 }
 
@@ -632,41 +632,41 @@
  * so here we adjust the DEF accordingly.
  */
 static void
-T_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
-	td->free_struct    = asn1_DEF_Ts.free_struct;
-	td->print_struct   = asn1_DEF_Ts.print_struct;
-	td->ber_decoder    = asn1_DEF_Ts.ber_decoder;
-	td->der_encoder    = asn1_DEF_Ts.der_encoder;
-	td->xer_decoder    = asn1_DEF_Ts.xer_decoder;
-	td->xer_encoder    = asn1_DEF_Ts.xer_encoder;
-	td->elements       = asn1_DEF_Ts.elements;
-	td->elements_count = asn1_DEF_Ts.elements_count;
-	td->specifics      = asn1_DEF_Ts.specifics;
+T_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_Ts.free_struct;
+	td->print_struct   = asn_DEF_Ts.print_struct;
+	td->ber_decoder    = asn_DEF_Ts.ber_decoder;
+	td->der_encoder    = asn_DEF_Ts.der_encoder;
+	td->xer_decoder    = asn_DEF_Ts.xer_decoder;
+	td->xer_encoder    = asn_DEF_Ts.xer_encoder;
+	td->elements       = asn_DEF_Ts.elements;
+	td->elements_count = asn_DEF_Ts.elements_count;
+	td->specifics      = asn_DEF_Ts.specifics;
 }
 
 void
-T_free(asn1_TYPE_descriptor_t *td,
+T_free(asn_TYPE_descriptor_t *td,
 		void *struct_ptr, int contents_only) {
 	T_inherit_TYPE_descriptor(td);
 	td->free_struct(td, struct_ptr, contents_only);
 }
 
 int
-T_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
+T_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
 		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
 	T_inherit_TYPE_descriptor(td);
 	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
 }
 
 ber_dec_rval_t
-T_decode_ber(asn1_TYPE_descriptor_t *td,
+T_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		void **structure, void *bufptr, size_t size, int tag_mode) {
 	T_inherit_TYPE_descriptor(td);
-	return td->ber_decoder(td, structure, bufptr, size, tag_mode);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
 }
 
 asn_enc_rval_t
-T_encode_der(asn1_TYPE_descriptor_t *td,
+T_encode_der(asn_TYPE_descriptor_t *td,
 		void *structure, int tag_mode, ber_tlv_tag_t tag,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	T_inherit_TYPE_descriptor(td);
@@ -674,7 +674,7 @@
 }
 
 asn_enc_rval_t
-T_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
+T_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
 		int ilevel, enum xer_encoder_flags_e flags,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	T_inherit_TYPE_descriptor(td);
@@ -684,12 +684,12 @@
 
 /*** <<< STAT-DEFS [T] >>> ***/
 
-static ber_tlv_tag_t asn1_DEF_T_tags[] = {
+static ber_tlv_tag_t asn_DEF_T_tags[] = {
 	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 	(ASN_TAG_CLASS_CONTEXT | (123 << 2)),
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-asn1_TYPE_descriptor_t asn1_DEF_T = {
+asn_TYPE_descriptor_t asn_DEF_T = {
 	"T",
 	T_free,
 	T_print,
@@ -699,12 +699,12 @@
 	0,				/* Not implemented yet */
 	T_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_T_tags,
-	sizeof(asn1_DEF_T_tags)
-		/sizeof(asn1_DEF_T_tags[0]) - 2, /* 1 */
-	asn1_DEF_T_tags,	/* Same as above */
-	sizeof(asn1_DEF_T_tags)
-		/sizeof(asn1_DEF_T_tags[0]), /* 3 */
+	asn_DEF_T_tags,
+	sizeof(asn_DEF_T_tags)
+		/sizeof(asn_DEF_T_tags[0]) - 2, /* 1 */
+	asn_DEF_T_tags,	/* Same as above */
+	sizeof(asn_DEF_T_tags)
+		/sizeof(asn_DEF_T_tags[0]), /* 3 */
 	0, 0,	/* Defined elsewhere */
 	0	/* No specifics */
 };
@@ -718,7 +718,7 @@
 
 /*** <<< DEPS [Ts] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_Ts;
+extern asn_TYPE_descriptor_t asn_DEF_Ts;
 
 /*** <<< TYPE-DECLS [Ts] >>> ***/
 
@@ -729,52 +729,52 @@
 	T3_t	 m3;
 	
 	/* Context for parsing across buffer boundaries */
-	ber_dec_ctx_t _ber_dec_ctx;
+	asn_struct_ctx_t _asn_ctx;
 } Ts_t;
 
 /*** <<< STAT-DEFS [Ts] >>> ***/
 
-static asn1_TYPE_member_t asn1_MBR_Ts[] = {
+static asn_TYPE_member_t asn_MBR_Ts[] = {
 	{ ATF_NOFLAGS, 0, offsetof(struct Ts, m1),
 		.tag = (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
 		.tag_mode = -1,	/* IMPLICIT tag at current level */
-		.type = (void *)&asn1_DEF_T2,
+		.type = (void *)&asn_DEF_T2,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "m1"
 		},
 	{ ATF_POINTER, 1, offsetof(struct Ts, m2),
 		.tag = (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
 		.tag_mode = +1,	/* EXPLICIT tag at current level */
-		.type = (void *)&asn1_DEF_T3,
+		.type = (void *)&asn_DEF_T3,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "m2"
 		},
 	{ ATF_NOFLAGS, 0, offsetof(struct Ts, m3),
 		.tag = (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
 		.tag_mode = -1,	/* IMPLICIT tag at current level */
-		.type = (void *)&asn1_DEF_T3,
+		.type = (void *)&asn_DEF_T3,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "m3"
 		},
 };
-static ber_tlv_tag_t asn1_DEF_Ts_tags[] = {
+static ber_tlv_tag_t asn_DEF_Ts_tags[] = {
 	(ASN_TAG_CLASS_CONTEXT | (123 << 2)),
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn1_TYPE_tag2member_t asn1_DEF_Ts_tag2el[] = {
+static asn_TYPE_tag2member_t asn_DEF_Ts_tag2el[] = {
     { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 }, /* m1 at 24 */
     { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* m2 at 25 */
     { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 }, /* m3 at 27 */
 };
-static asn1_SEQUENCE_specifics_t asn1_DEF_Ts_specs = {
+static asn_SEQUENCE_specifics_t asn_DEF_Ts_specs = {
 	sizeof(struct Ts),
-	offsetof(struct Ts, _ber_dec_ctx),
-	asn1_DEF_Ts_tag2el,
+	offsetof(struct Ts, _asn_ctx),
+	asn_DEF_Ts_tag2el,
 	3,	/* Count of tags in the map */
 	-1,	/* Start extensions */
 	-1	/* Stop extensions */
 };
-asn1_TYPE_descriptor_t asn1_DEF_Ts = {
+asn_TYPE_descriptor_t asn_DEF_Ts = {
 	"Ts",
 	SEQUENCE_free,
 	SEQUENCE_print,
@@ -784,14 +784,14 @@
 	0,				/* Not implemented yet */
 	SEQUENCE_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_Ts_tags,
-	sizeof(asn1_DEF_Ts_tags)
-		/sizeof(asn1_DEF_Ts_tags[0]) - 1, /* 1 */
-	asn1_DEF_Ts_tags,	/* Same as above */
-	sizeof(asn1_DEF_Ts_tags)
-		/sizeof(asn1_DEF_Ts_tags[0]), /* 2 */
-	asn1_MBR_Ts,
+	asn_DEF_Ts_tags,
+	sizeof(asn_DEF_Ts_tags)
+		/sizeof(asn_DEF_Ts_tags[0]) - 1, /* 1 */
+	asn_DEF_Ts_tags,	/* Same as above */
+	sizeof(asn_DEF_Ts_tags)
+		/sizeof(asn_DEF_Ts_tags[0]), /* 2 */
+	asn_MBR_Ts,
 	3,	/* Elements count */
-	&asn1_DEF_Ts_specs	/* Additional specs */
+	&asn_DEF_Ts_specs	/* Additional specs */
 };
 
diff --git a/tests/66-ref-simple-OK.asn1.-P b/tests/66-ref-simple-OK.asn1.-P
index 03027f0..025f7e9 100644
--- a/tests/66-ref-simple-OK.asn1.-P
+++ b/tests/66-ref-simple-OK.asn1.-P
@@ -7,7 +7,7 @@
 
 /*** <<< DEPS [T] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_T;
+extern asn_TYPE_descriptor_t asn_DEF_T;
 
 /*** <<< TYPE-DECLS [T] >>> ***/
 
@@ -16,29 +16,29 @@
 	A_SET_OF(SimpleType_t) list;
 	
 	/* Context for parsing across buffer boundaries */
-	ber_dec_ctx_t _ber_dec_ctx;
+	asn_struct_ctx_t _asn_ctx;
 } T_t;
 
 /*** <<< STAT-DEFS [T] >>> ***/
 
-static asn1_TYPE_member_t asn1_MBR_T[] = {
+static asn_TYPE_member_t asn_MBR_T[] = {
 	{ ATF_NOFLAGS, 0, 0,
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn1_DEF_SimpleType,
+		.type = (void *)&asn_DEF_SimpleType,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = ""
 		},
 };
-static ber_tlv_tag_t asn1_DEF_T_tags[] = {
+static ber_tlv_tag_t asn_DEF_T_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (17 << 2))
 };
-static asn1_SET_OF_specifics_t asn1_DEF_T_specs = {
+static asn_SET_OF_specifics_t asn_DEF_T_specs = {
 	sizeof(struct T),
-	offsetof(struct T, _ber_dec_ctx),
+	offsetof(struct T, _asn_ctx),
 	1,	/* XER encoding is XMLValueList */
 };
-asn1_TYPE_descriptor_t asn1_DEF_T = {
+asn_TYPE_descriptor_t asn_DEF_T = {
 	"T",
 	SET_OF_free,
 	SET_OF_print,
@@ -48,15 +48,15 @@
 	0,				/* Not implemented yet */
 	SET_OF_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_T_tags,
-	sizeof(asn1_DEF_T_tags)
-		/sizeof(asn1_DEF_T_tags[0]), /* 1 */
-	asn1_DEF_T_tags,	/* Same as above */
-	sizeof(asn1_DEF_T_tags)
-		/sizeof(asn1_DEF_T_tags[0]), /* 1 */
-	asn1_MBR_T,
+	asn_DEF_T_tags,
+	sizeof(asn_DEF_T_tags)
+		/sizeof(asn_DEF_T_tags[0]), /* 1 */
+	asn_DEF_T_tags,	/* Same as above */
+	sizeof(asn_DEF_T_tags)
+		/sizeof(asn_DEF_T_tags[0]), /* 1 */
+	asn_MBR_T,
 	1,	/* Single element */
-	&asn1_DEF_T_specs	/* Additional specs */
+	&asn_DEF_T_specs	/* Additional specs */
 };
 
 
@@ -79,7 +79,7 @@
 
 /*** <<< FUNC-DECLS [SimpleType] >>> ***/
 
-extern asn1_TYPE_descriptor_t asn1_DEF_SimpleType;
+extern asn_TYPE_descriptor_t asn_DEF_SimpleType;
 asn_struct_free_f SimpleType_free;
 asn_struct_print_f SimpleType_print;
 asn_constr_check_f SimpleType_constraint;
@@ -90,10 +90,10 @@
 /*** <<< CODE [SimpleType] >>> ***/
 
 int
-SimpleType_constraint(asn1_TYPE_descriptor_t *td, const void *sptr,
+SimpleType_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	/* Replace with underlying type checker */
-	td->check_constraints = asn1_DEF_ENUMERATED.check_constraints;
+	td->check_constraints = asn_DEF_ENUMERATED.check_constraints;
 	return td->check_constraints(td, sptr, app_errlog, app_key);
 }
 
@@ -102,41 +102,41 @@
  * so here we adjust the DEF accordingly.
  */
 static void
-SimpleType_inherit_TYPE_descriptor(asn1_TYPE_descriptor_t *td) {
-	td->free_struct    = asn1_DEF_ENUMERATED.free_struct;
-	td->print_struct   = asn1_DEF_ENUMERATED.print_struct;
-	td->ber_decoder    = asn1_DEF_ENUMERATED.ber_decoder;
-	td->der_encoder    = asn1_DEF_ENUMERATED.der_encoder;
-	td->xer_decoder    = asn1_DEF_ENUMERATED.xer_decoder;
-	td->xer_encoder    = asn1_DEF_ENUMERATED.xer_encoder;
-	td->elements       = asn1_DEF_ENUMERATED.elements;
-	td->elements_count = asn1_DEF_ENUMERATED.elements_count;
-	td->specifics      = asn1_DEF_ENUMERATED.specifics;
+SimpleType_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
+	td->free_struct    = asn_DEF_ENUMERATED.free_struct;
+	td->print_struct   = asn_DEF_ENUMERATED.print_struct;
+	td->ber_decoder    = asn_DEF_ENUMERATED.ber_decoder;
+	td->der_encoder    = asn_DEF_ENUMERATED.der_encoder;
+	td->xer_decoder    = asn_DEF_ENUMERATED.xer_decoder;
+	td->xer_encoder    = asn_DEF_ENUMERATED.xer_encoder;
+	td->elements       = asn_DEF_ENUMERATED.elements;
+	td->elements_count = asn_DEF_ENUMERATED.elements_count;
+	td->specifics      = asn_DEF_ENUMERATED.specifics;
 }
 
 void
-SimpleType_free(asn1_TYPE_descriptor_t *td,
+SimpleType_free(asn_TYPE_descriptor_t *td,
 		void *struct_ptr, int contents_only) {
 	SimpleType_inherit_TYPE_descriptor(td);
 	td->free_struct(td, struct_ptr, contents_only);
 }
 
 int
-SimpleType_print(asn1_TYPE_descriptor_t *td, const void *struct_ptr,
+SimpleType_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
 		int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
 	SimpleType_inherit_TYPE_descriptor(td);
 	return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
 }
 
 ber_dec_rval_t
-SimpleType_decode_ber(asn1_TYPE_descriptor_t *td,
+SimpleType_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
 		void **structure, void *bufptr, size_t size, int tag_mode) {
 	SimpleType_inherit_TYPE_descriptor(td);
-	return td->ber_decoder(td, structure, bufptr, size, tag_mode);
+	return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
 }
 
 asn_enc_rval_t
-SimpleType_encode_der(asn1_TYPE_descriptor_t *td,
+SimpleType_encode_der(asn_TYPE_descriptor_t *td,
 		void *structure, int tag_mode, ber_tlv_tag_t tag,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	SimpleType_inherit_TYPE_descriptor(td);
@@ -144,7 +144,7 @@
 }
 
 asn_enc_rval_t
-SimpleType_encode_xer(asn1_TYPE_descriptor_t *td, void *structure,
+SimpleType_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
 		int ilevel, enum xer_encoder_flags_e flags,
 		asn_app_consume_bytes_f *cb, void *app_key) {
 	SimpleType_inherit_TYPE_descriptor(td);
@@ -154,10 +154,10 @@
 
 /*** <<< STAT-DEFS [SimpleType] >>> ***/
 
-static ber_tlv_tag_t asn1_DEF_SimpleType_tags[] = {
+static ber_tlv_tag_t asn_DEF_SimpleType_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
 };
-asn1_TYPE_descriptor_t asn1_DEF_SimpleType = {
+asn_TYPE_descriptor_t asn_DEF_SimpleType = {
 	"SimpleType",
 	SimpleType_free,
 	SimpleType_print,
@@ -167,12 +167,12 @@
 	0,				/* Not implemented yet */
 	SimpleType_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn1_DEF_SimpleType_tags,
-	sizeof(asn1_DEF_SimpleType_tags)
-		/sizeof(asn1_DEF_SimpleType_tags[0]), /* 1 */
-	asn1_DEF_SimpleType_tags,	/* Same as above */
-	sizeof(asn1_DEF_SimpleType_tags)
-		/sizeof(asn1_DEF_SimpleType_tags[0]), /* 1 */
+	asn_DEF_SimpleType_tags,
+	sizeof(asn_DEF_SimpleType_tags)
+		/sizeof(asn_DEF_SimpleType_tags[0]), /* 1 */
+	asn_DEF_SimpleType_tags,	/* Same as above */
+	sizeof(asn_DEF_SimpleType_tags)
+		/sizeof(asn_DEF_SimpleType_tags[0]), /* 1 */
 	0, 0,	/* No members */
 	0	/* No specifics */
 };