diff --git a/tests/70-xer-test-OK.asn1.-P b/tests/70-xer-test-OK.asn1.-P
index e11090ae2e7af53598e935f6fc846b0955ee45dd..6214a21cc195c71e909a97d24e75b3372a049364 100644
--- a/tests/70-xer-test-OK.asn1.-P
+++ b/tests/70-xer-test-OK.asn1.-P
@@ -4,7 +4,9 @@
 #include <Sequence.h>
 #include <Set.h>
 #include <SetOf.h>
-#include <SeqOf.h>
+#include <SequenceOf.h>
+#include <ExtensibleSet.h>
+#include <ExtensibleSequence.h>
 #include <constr_CHOICE.h>
 
 /*** <<< DEPS [PDU] >>> ***/
@@ -14,7 +16,10 @@ typedef enum PDU_PR {
 	PDU_PR_sequence,
 	PDU_PR_set,
 	PDU_PR_setOf,
-	PDU_PR_seqOf,
+	PDU_PR_sequenceOf,
+	PDU_PR_extensibleSet,
+	PDU_PR_extensibleSequence,
+	/* Extensions may appear below */
 } PDU_PR;
 extern asn_TYPE_descriptor_t asn_DEF_PDU;
 
@@ -27,7 +32,13 @@ typedef struct PDU {
 		Sequence_t	 sequence;
 		Set_t	 set;
 		SetOf_t	 setOf;
-		SeqOf_t	 seqOf;
+		SequenceOf_t	 sequenceOf;
+		ExtensibleSet_t	 extensibleSet;
+		ExtensibleSequence_t	 extensibleSequence;
+		/*
+		 * This type is extensible,
+		 * possible extensions are below.
+		 */
 	} choice;
 	
 	/* Context for parsing across buffer boundaries */
@@ -58,19 +69,35 @@ static asn_TYPE_member_t asn_MBR_PDU[] = {
 		.memb_constraints = 0,	/* Defer constraints checking to the member type */
 		.name = "setOf"
 		},
-	{ ATF_NOFLAGS, 0, offsetof(struct PDU, choice.seqOf),
+	{ ATF_NOFLAGS, 0, offsetof(struct PDU, choice.sequenceOf),
 		.tag = (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
 		.tag_mode = -1,	/* IMPLICIT tag at current level */
-		.type = (void *)&asn_DEF_SeqOf,
+		.type = (void *)&asn_DEF_SequenceOf,
 		.memb_constraints = 0,	/* Defer constraints checking to the member type */
-		.name = "seqOf"
+		.name = "sequenceOf"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct PDU, choice.extensibleSet),
+		.tag = (ASN_TAG_CLASS_CONTEXT | (4 << 2)),
+		.tag_mode = -1,	/* IMPLICIT tag at current level */
+		.type = (void *)&asn_DEF_ExtensibleSet,
+		.memb_constraints = 0,	/* Defer constraints checking to the member type */
+		.name = "extensibleSet"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct PDU, choice.extensibleSequence),
+		.tag = (ASN_TAG_CLASS_CONTEXT | (5 << 2)),
+		.tag_mode = -1,	/* IMPLICIT tag at current level */
+		.type = (void *)&asn_DEF_ExtensibleSequence,
+		.memb_constraints = 0,	/* Defer constraints checking to the member type */
+		.name = "extensibleSequence"
 		},
 };
 static asn_TYPE_tag2member_t asn_DEF_PDU_tag2el[] = {
     { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* sequence at 19 */
     { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* set at 20 */
     { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* setOf at 21 */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* seqOf at 23 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* sequenceOf at 22 */
+    { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* extensibleSet at 23 */
+    { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* extensibleSequence at 24 */
 };
 static asn_CHOICE_specifics_t asn_DEF_PDU_specs = {
 	sizeof(struct PDU),
@@ -78,8 +105,8 @@ static asn_CHOICE_specifics_t asn_DEF_PDU_specs = {
 	offsetof(struct PDU, present),
 	sizeof(((struct PDU *)0)->present),
 	asn_DEF_PDU_tag2el,
-	4,	/* Count of tags in the map */
-	0	/* Whether extensible */
+	6,	/* Count of tags in the map */
+	1	/* Whether extensible */
 };
 asn_TYPE_descriptor_t asn_DEF_PDU = {
 	"PDU",
@@ -97,7 +124,7 @@ asn_TYPE_descriptor_t asn_DEF_PDU = {
 	0,	/* No tags (pointer) */
 	0,	/* No tags (count) */
 	asn_MBR_PDU,
-	4,	/* Elements count */
+	6,	/* Elements count */
 	&asn_DEF_PDU_specs	/* Additional specs */
 };
 
@@ -165,10 +192,10 @@ static ber_tlv_tag_t asn_DEF_Sequence_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
 static asn_TYPE_tag2member_t asn_DEF_Sequence_tag2el[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* integer at 26 */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sequence at 27 */
-    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* bits at 28 */
-    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* string at 29 */
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* integer at 29 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* sequence at 30 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* bits at 31 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* string at 32 */
 };
 static asn_SEQUENCE_specifics_t asn_DEF_Sequence_specs = {
 	sizeof(struct Sequence),
@@ -256,8 +283,8 @@ static ber_tlv_tag_t asn_DEF_Set_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (17 << 2))
 };
 static asn_TYPE_tag2member_t asn_DEF_Set_tag2el[] = {
-    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* roid at 33 */
-    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* opaque at 34 */
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* roid at 36 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* opaque at 37 */
 };
 static uint8_t asn_DEF_Set_mmap[(2 + (8 * sizeof(unsigned int)) - 1) / 8] = {
 	(1 << 7) | (0 << 6)
@@ -296,6 +323,175 @@ asn_TYPE_descriptor_t asn_DEF_Set = {
 };
 
 
+/*** <<< INCLUDES [ExtensibleSet] >>> ***/
+
+#include <UTF8String.h>
+#include <constr_SET.h>
+
+/*** <<< DEPS [ExtensibleSet] >>> ***/
+
+
+/*
+ * Method of determining the components presence
+ */
+typedef enum ExtensibleSet_PR {
+	ExtensibleSet_PR_string,	/* Member string is present */
+} ExtensibleSet_PR;
+extern asn_TYPE_descriptor_t asn_DEF_ExtensibleSet;
+
+/*** <<< TYPE-DECLS [ExtensibleSet] >>> ***/
+
+
+typedef struct ExtensibleSet {
+	UTF8String_t	*string	/* OPTIONAL */;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Presence bitmask: ASN_SET_ISPRESENT(pExtensibleSet, ExtensibleSet_PR_x) */
+	unsigned int _presence_map
+		[((1+(8*sizeof(unsigned int))-1)/(8*sizeof(unsigned int)))];
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} ExtensibleSet_t;
+
+/*** <<< STAT-DEFS [ExtensibleSet] >>> ***/
+
+static asn_TYPE_member_t asn_MBR_ExtensibleSet[] = {
+	{ ATF_POINTER, 1, offsetof(struct ExtensibleSet, string),
+		.tag = (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		.tag_mode = -1,	/* IMPLICIT tag at current level */
+		.type = (void *)&asn_DEF_UTF8String,
+		.memb_constraints = 0,	/* Defer constraints checking to the member type */
+		.name = "string"
+		},
+};
+static ber_tlv_tag_t asn_DEF_ExtensibleSet_tags[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (17 << 2))
+};
+static asn_TYPE_tag2member_t asn_DEF_ExtensibleSet_tag2el[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* string at 41 */
+};
+static uint8_t asn_DEF_ExtensibleSet_mmap[(1 + (8 * sizeof(unsigned int)) - 1) / 8] = {
+	(0 << 7)
+};
+static asn_SET_specifics_t asn_DEF_ExtensibleSet_specs = {
+	sizeof(struct ExtensibleSet),
+	offsetof(struct ExtensibleSet, _asn_ctx),
+	offsetof(struct ExtensibleSet, _presence_map),
+	asn_DEF_ExtensibleSet_tag2el,
+	1,	/* Count of tags in the map */
+	asn_DEF_ExtensibleSet_tag2el,	/* Same as above */
+	1,	/* Count of tags in the CANONICAL-XER map */
+	1,	/* Whether extensible */
+	(unsigned int *)asn_DEF_ExtensibleSet_mmap	/* Mandatory elements map */
+};
+asn_TYPE_descriptor_t asn_DEF_ExtensibleSet = {
+	"ExtensibleSet",
+	"ExtensibleSet",
+	SET_free,
+	SET_print,
+	SET_constraint,
+	SET_decode_ber,
+	SET_encode_der,
+	SET_decode_xer,
+	SET_encode_xer,
+	0,	/* Use generic outmost tag fetcher */
+	asn_DEF_ExtensibleSet_tags,
+	sizeof(asn_DEF_ExtensibleSet_tags)
+		/sizeof(asn_DEF_ExtensibleSet_tags[0]), /* 1 */
+	asn_DEF_ExtensibleSet_tags,	/* Same as above */
+	sizeof(asn_DEF_ExtensibleSet_tags)
+		/sizeof(asn_DEF_ExtensibleSet_tags[0]), /* 1 */
+	asn_MBR_ExtensibleSet,
+	1,	/* Elements count */
+	&asn_DEF_ExtensibleSet_specs	/* Additional specs */
+};
+
+
+/*** <<< INCLUDES [ExtensibleSequence] >>> ***/
+
+#include <UTF8String.h>
+#include <INTEGER.h>
+#include <constr_SEQUENCE.h>
+
+/*** <<< DEPS [ExtensibleSequence] >>> ***/
+
+extern asn_TYPE_descriptor_t asn_DEF_ExtensibleSequence;
+
+/*** <<< TYPE-DECLS [ExtensibleSequence] >>> ***/
+
+
+typedef struct ExtensibleSequence {
+	UTF8String_t	*string	/* OPTIONAL */;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	INTEGER_t	*integer	/* OPTIONAL */;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} ExtensibleSequence_t;
+
+/*** <<< STAT-DEFS [ExtensibleSequence] >>> ***/
+
+static asn_TYPE_member_t asn_MBR_ExtensibleSequence[] = {
+	{ ATF_POINTER, 2, offsetof(struct ExtensibleSequence, string),
+		.tag = (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+		.tag_mode = -1,	/* IMPLICIT tag at current level */
+		.type = (void *)&asn_DEF_UTF8String,
+		.memb_constraints = 0,	/* Defer constraints checking to the member type */
+		.name = "string"
+		},
+	{ ATF_POINTER, 1, offsetof(struct ExtensibleSequence, integer),
+		.tag = (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		.tag_mode = -1,	/* IMPLICIT tag at current level */
+		.type = (void *)&asn_DEF_INTEGER,
+		.memb_constraints = 0,	/* Defer constraints checking to the member type */
+		.name = "integer"
+		},
+};
+static ber_tlv_tag_t asn_DEF_ExtensibleSequence_tags[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_TYPE_tag2member_t asn_DEF_ExtensibleSequence_tag2el[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* string at 46 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* integer at 48 */
+};
+static asn_SEQUENCE_specifics_t asn_DEF_ExtensibleSequence_specs = {
+	sizeof(struct ExtensibleSequence),
+	offsetof(struct ExtensibleSequence, _asn_ctx),
+	asn_DEF_ExtensibleSequence_tag2el,
+	2,	/* Count of tags in the map */
+	0,	/* Start extensions */
+	3	/* Stop extensions */
+};
+asn_TYPE_descriptor_t asn_DEF_ExtensibleSequence = {
+	"ExtensibleSequence",
+	"ExtensibleSequence",
+	SEQUENCE_free,
+	SEQUENCE_print,
+	SEQUENCE_constraint,
+	SEQUENCE_decode_ber,
+	SEQUENCE_encode_der,
+	SEQUENCE_decode_xer,
+	SEQUENCE_encode_xer,
+	0,	/* Use generic outmost tag fetcher */
+	asn_DEF_ExtensibleSequence_tags,
+	sizeof(asn_DEF_ExtensibleSequence_tags)
+		/sizeof(asn_DEF_ExtensibleSequence_tags[0]), /* 1 */
+	asn_DEF_ExtensibleSequence_tags,	/* Same as above */
+	sizeof(asn_DEF_ExtensibleSequence_tags)
+		/sizeof(asn_DEF_ExtensibleSequence_tags[0]), /* 1 */
+	asn_MBR_ExtensibleSequence,
+	2,	/* Elements count */
+	&asn_DEF_ExtensibleSequence_specs	/* Additional specs */
+};
+
+
 /*** <<< INCLUDES [SetOf] >>> ***/
 
 #include <REAL.h>
@@ -358,29 +554,29 @@ asn_TYPE_descriptor_t asn_DEF_SetOf = {
 };
 
 
-/*** <<< INCLUDES [SeqOf] >>> ***/
+/*** <<< INCLUDES [SequenceOf] >>> ***/
 
 #include <INTEGER.h>
 #include <asn_SEQUENCE_OF.h>
 #include <constr_SEQUENCE_OF.h>
 
-/*** <<< DEPS [SeqOf] >>> ***/
+/*** <<< DEPS [SequenceOf] >>> ***/
 
-extern asn_TYPE_descriptor_t asn_DEF_SeqOf;
+extern asn_TYPE_descriptor_t asn_DEF_SequenceOf;
 
-/*** <<< TYPE-DECLS [SeqOf] >>> ***/
+/*** <<< TYPE-DECLS [SequenceOf] >>> ***/
 
 
-typedef struct SeqOf {
+typedef struct SequenceOf {
 	A_SEQUENCE_OF(INTEGER_t) list;
 	
 	/* Context for parsing across buffer boundaries */
 	asn_struct_ctx_t _asn_ctx;
-} SeqOf_t;
+} SequenceOf_t;
 
-/*** <<< STAT-DEFS [SeqOf] >>> ***/
+/*** <<< STAT-DEFS [SequenceOf] >>> ***/
 
-static asn_TYPE_member_t asn_MBR_SeqOf[] = {
+static asn_TYPE_member_t asn_MBR_SequenceOf[] = {
 	{ ATF_NOFLAGS, 0, 0,
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
 		.tag_mode = 0,
@@ -389,17 +585,17 @@ static asn_TYPE_member_t asn_MBR_SeqOf[] = {
 		.name = "id"
 		},
 };
-static ber_tlv_tag_t asn_DEF_SeqOf_tags[] = {
+static ber_tlv_tag_t asn_DEF_SequenceOf_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn_SET_OF_specifics_t asn_DEF_SeqOf_specs = {
-	sizeof(struct SeqOf),
-	offsetof(struct SeqOf, _asn_ctx),
+static asn_SET_OF_specifics_t asn_DEF_SequenceOf_specs = {
+	sizeof(struct SequenceOf),
+	offsetof(struct SequenceOf, _asn_ctx),
 	0,	/* XER encoding is XMLDelimitedItemList */
 };
-asn_TYPE_descriptor_t asn_DEF_SeqOf = {
-	"SeqOf",
-	"SeqOf",
+asn_TYPE_descriptor_t asn_DEF_SequenceOf = {
+	"SequenceOf",
+	"SequenceOf",
 	SEQUENCE_OF_free,
 	SEQUENCE_OF_print,
 	SEQUENCE_OF_constraint,
@@ -408,14 +604,14 @@ asn_TYPE_descriptor_t asn_DEF_SeqOf = {
 	SEQUENCE_OF_decode_xer,
 	SEQUENCE_OF_encode_xer,
 	0,	/* Use generic outmost tag fetcher */
-	asn_DEF_SeqOf_tags,
-	sizeof(asn_DEF_SeqOf_tags)
-		/sizeof(asn_DEF_SeqOf_tags[0]), /* 1 */
-	asn_DEF_SeqOf_tags,	/* Same as above */
-	sizeof(asn_DEF_SeqOf_tags)
-		/sizeof(asn_DEF_SeqOf_tags[0]), /* 1 */
-	asn_MBR_SeqOf,
+	asn_DEF_SequenceOf_tags,
+	sizeof(asn_DEF_SequenceOf_tags)
+		/sizeof(asn_DEF_SequenceOf_tags[0]), /* 1 */
+	asn_DEF_SequenceOf_tags,	/* Same as above */
+	sizeof(asn_DEF_SequenceOf_tags)
+		/sizeof(asn_DEF_SequenceOf_tags[0]), /* 1 */
+	asn_MBR_SequenceOf,
 	1,	/* Single element */
-	&asn_DEF_SeqOf_specs	/* Additional specs */
+	&asn_DEF_SequenceOf_specs	/* Additional specs */
 };