diff --git a/tests/39-sequence-of-OK.asn1.-P b/tests/39-sequence-of-OK.asn1.-P
index 68435f7..351e01b 100644
--- a/tests/39-sequence-of-OK.asn1.-P
+++ b/tests/39-sequence-of-OK.asn1.-P
@@ -29,7 +29,7 @@
 
 /*** <<< STAT-DEFS [T] >>> ***/
 
-static asn_TYPE_member_t asn_MBR_collection[] = {
+static asn_TYPE_member_t asn_MBR_collection_2[] = {
 	{ ATF_NOFLAGS, 0, 0,
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
 		.tag_mode = 0,
@@ -38,16 +38,16 @@
 		.name = ""
 		},
 };
-static ber_tlv_tag_t asn_DEF_collection_tags[] = {
+static ber_tlv_tag_t asn_DEF_collection_2_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn_SET_OF_specifics_t asn_DEF_collection_specs = {
+static asn_SET_OF_specifics_t asn_SPC_collection_2_specs = {
 	sizeof(struct collection),
 	offsetof(struct collection, _asn_ctx),
 	0,	/* XER encoding is XMLDelimitedItemList */
 };
 static /* Use -fall-defs-global to expose */
-asn_TYPE_descriptor_t asn_DEF_collection = {
+asn_TYPE_descriptor_t asn_DEF_collection_2 = {
 	"collection",
 	"collection",
 	SEQUENCE_OF_free,
@@ -58,18 +58,18 @@
 	SEQUENCE_OF_decode_xer,
 	SEQUENCE_OF_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	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,
+	asn_DEF_collection_2_tags,
+	sizeof(asn_DEF_collection_2_tags)
+		/sizeof(asn_DEF_collection_2_tags[0]), /* 1 */
+	asn_DEF_collection_2_tags,	/* Same as above */
+	sizeof(asn_DEF_collection_2_tags)
+		/sizeof(asn_DEF_collection_2_tags[0]), /* 1 */
+	asn_MBR_collection_2,
 	1,	/* Single element */
-	&asn_DEF_collection_specs	/* Additional specs */
+	&asn_SPC_collection_2_specs	/* Additional specs */
 };
 
-static asn_TYPE_member_t asn_MBR_T[] = {
+static asn_TYPE_member_t asn_MBR_T_1[] = {
 	{ ATF_NOFLAGS, 0, offsetof(struct T, Int),
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
 		.tag_mode = 0,
@@ -80,22 +80,22 @@
 	{ ATF_NOFLAGS, 0, offsetof(struct T, collection),
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
 		.tag_mode = 0,
-		.type = (void *)&asn_DEF_collection,
+		.type = (void *)&asn_DEF_collection_2,
 		.memb_constraints = 0,	/* Defer constraints checking to the member type */
 		.name = "collection"
 		},
 };
-static ber_tlv_tag_t asn_DEF_T_tags[] = {
+static ber_tlv_tag_t asn_DEF_T_1_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn_TYPE_tag2member_t asn_DEF_T_tag2el[] = {
+static asn_TYPE_tag2member_t asn_MAP_T_1_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 asn_SEQUENCE_specifics_t asn_DEF_T_specs = {
+static asn_SEQUENCE_specifics_t asn_SPC_T_1_specs = {
 	sizeof(struct T),
 	offsetof(struct T, _asn_ctx),
-	asn_DEF_T_tag2el,
+	asn_MAP_T_1_tag2el,
 	2,	/* Count of tags in the map */
 	-1,	/* Start extensions */
 	-1	/* Stop extensions */
@@ -111,15 +111,15 @@
 	SEQUENCE_decode_xer,
 	SEQUENCE_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	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,
+	asn_DEF_T_1_tags,
+	sizeof(asn_DEF_T_1_tags)
+		/sizeof(asn_DEF_T_1_tags[0]), /* 1 */
+	asn_DEF_T_1_tags,	/* Same as above */
+	sizeof(asn_DEF_T_1_tags)
+		/sizeof(asn_DEF_T_1_tags[0]), /* 1 */
+	asn_MBR_T_1,
 	2,	/* Elements count */
-	&asn_DEF_T_specs	/* Additional specs */
+	&asn_SPC_T_1_specs	/* Additional specs */
 };
 
 
@@ -146,7 +146,7 @@
 
 /*** <<< STAT-DEFS [T2] >>> ***/
 
-static asn_TYPE_member_t asn_MBR_T2[] = {
+static asn_TYPE_member_t asn_MBR_T2_1[] = {
 	{ ATF_NOFLAGS, 0, offsetof(struct T2, flag),
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (1 << 2)),
 		.tag_mode = 0,
@@ -162,17 +162,17 @@
 		.name = "str"
 		},
 };
-static ber_tlv_tag_t asn_DEF_T2_tags[] = {
+static ber_tlv_tag_t asn_DEF_T2_1_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn_TYPE_tag2member_t asn_DEF_T2_tag2el[] = {
+static asn_TYPE_tag2member_t asn_MAP_T2_1_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 asn_SEQUENCE_specifics_t asn_DEF_T2_specs = {
+static asn_SEQUENCE_specifics_t asn_SPC_T2_1_specs = {
 	sizeof(struct T2),
 	offsetof(struct T2, _asn_ctx),
-	asn_DEF_T2_tag2el,
+	asn_MAP_T2_1_tag2el,
 	2,	/* Count of tags in the map */
 	-1,	/* Start extensions */
 	-1	/* Stop extensions */
@@ -188,14 +188,14 @@
 	SEQUENCE_decode_xer,
 	SEQUENCE_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	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,
+	asn_DEF_T2_1_tags,
+	sizeof(asn_DEF_T2_1_tags)
+		/sizeof(asn_DEF_T2_1_tags[0]), /* 1 */
+	asn_DEF_T2_1_tags,	/* Same as above */
+	sizeof(asn_DEF_T2_1_tags)
+		/sizeof(asn_DEF_T2_1_tags[0]), /* 1 */
+	asn_MBR_T2_1,
 	2,	/* Elements count */
-	&asn_DEF_T2_specs	/* Additional specs */
+	&asn_SPC_T2_1_specs	/* Additional specs */
 };
 
