diff --git a/tests/31-set-of-OK.asn1.-P b/tests/31-set-of-OK.asn1.-P
index 37533f0..143ab8c 100644
--- a/tests/31-set-of-OK.asn1.-P
+++ b/tests/31-set-of-OK.asn1.-P
@@ -142,6 +142,8 @@
 #include <constr_SET_OF.h>
 #include <BIT_STRING.h>
 #include <constr_SEQUENCE.h>
+#include <INTEGER.h>
+#include <constr_CHOICE.h>
 #include <constr_SET.h>
 
 /*** <<< DEPS [Stuff] >>> ***/
@@ -153,7 +155,13 @@
 typedef enum Stuff_PR {
 	Stuff_PR_trees,	/* Member trees is present */
 	Stuff_PR_anything,	/* Member anything is present */
+	Stuff_PR_other,	/* Member other is present */
 } Stuff_PR;
+typedef enum other_PR {
+	other_PR_NOTHING,	/* No components present */
+	other_PR_a,
+	other_PR_b,
+} other_PR;
 extern asn_TYPE_descriptor_t asn_DEF_Stuff;
 
 /*** <<< TYPE-DECLS [Stuff] >>> ***/
@@ -181,10 +189,24 @@
 		/* Context for parsing across buffer boundaries */
 		asn_struct_ctx_t _asn_ctx;
 	} *anything;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	struct other {
+		other_PR present;
+		union {
+			INTEGER_t	 a;
+			INTEGER_t	 b;
+		} choice;
+		
+		/* Context for parsing across buffer boundaries */
+		asn_struct_ctx_t _asn_ctx;
+	} *other;
 	
 	/* Presence bitmask: ASN_SET_ISPRESENT(pStuff, Stuff_PR_x) */
 	unsigned int _presence_map
-		[((2+(8*sizeof(unsigned int))-1)/(8*sizeof(unsigned int)))];
+		[((3+(8*sizeof(unsigned int))-1)/(8*sizeof(unsigned int)))];
 	
 	/* Context for parsing across buffer boundaries */
 	asn_struct_ctx_t _asn_ctx;
@@ -202,7 +224,7 @@
 		},
 };
 static ber_tlv_tag_t asn_DEF_trees_tags[] = {
-	(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
+	(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
 	(ASN_TAG_CLASS_UNIVERSAL | (17 << 2))
 };
 static asn_SET_OF_specifics_t asn_DEF_trees_specs = {
@@ -245,7 +267,7 @@
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
 static asn_TYPE_tag2member_t asn_DEF_anything_member_tag2el[] = {
-    { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 0, 0, 0 }, /* cup-of-coffee at 26 */
+    { (ASN_TAG_CLASS_UNIVERSAL | (3 << 2)), 0, 0, 0 }, /* cup-of-coffee at 32 */
 };
 static asn_SEQUENCE_specifics_t asn_DEF_anything_member_specs = {
 	sizeof(struct anything_member),
@@ -287,7 +309,7 @@
 		},
 };
 static ber_tlv_tag_t asn_DEF_anything_tags[] = {
-	(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+	(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
 	(ASN_TAG_CLASS_UNIVERSAL | (17 << 2))
 };
 static asn_SET_OF_specifics_t asn_DEF_anything_specs = {
@@ -317,39 +339,104 @@
 	&asn_DEF_anything_specs	/* Additional specs */
 };
 
-static asn_TYPE_member_t asn_MBR_Stuff[] = {
-	{ ATF_POINTER, 2, offsetof(struct Stuff, trees),
+static asn_TYPE_member_t asn_MBR_other[] = {
+	{ ATF_NOFLAGS, 0, offsetof(struct other, choice.a),
 		.tag = (ASN_TAG_CLASS_CONTEXT | (0 << 2)),
 		.tag_mode = -1,	/* IMPLICIT tag at current level */
+		.type = (void *)&asn_DEF_INTEGER,
+		.memb_constraints = 0,	/* Defer to actual type */
+		.name = "a"
+		},
+	{ ATF_NOFLAGS, 0, offsetof(struct other, choice.b),
+		.tag = (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
+		.tag_mode = -1,	/* IMPLICIT tag at current level */
+		.type = (void *)&asn_DEF_INTEGER,
+		.memb_constraints = 0,	/* Defer to actual type */
+		.name = "b"
+		},
+};
+static asn_TYPE_tag2member_t asn_DEF_other_tag2el[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* a at 26 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 1, 0, 0 }, /* b at 28 */
+};
+static asn_CHOICE_specifics_t asn_DEF_other_specs = {
+	sizeof(struct other),
+	offsetof(struct other, _asn_ctx),
+	offsetof(struct other, present),
+	sizeof(((struct other *)0)->present),
+	asn_DEF_other_tag2el,
+	2,	/* Count of tags in the map */
+	0	/* Whether extensible */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_other = {
+	"other",
+	CHOICE_free,
+	CHOICE_print,
+	CHOICE_constraint,
+	CHOICE_decode_ber,
+	CHOICE_encode_der,
+	0,				/* Not implemented yet */
+	CHOICE_encode_xer,
+	CHOICE_outmost_tag,
+	0,	/* No effective tags (pointer) */
+	0,	/* No effective tags (count) */
+	0,	/* No tags (pointer) */
+	0,	/* No tags (count) */
+	asn_MBR_other,
+	2,	/* Elements count */
+	&asn_DEF_other_specs	/* Additional specs */
+};
+
+static asn_TYPE_member_t asn_MBR_Stuff[] = {
+	{ ATF_POINTER, 3, offsetof(struct Stuff, trees),
+		.tag = (ASN_TAG_CLASS_CONTEXT | (1 << 2)),
+		.tag_mode = -1,	/* IMPLICIT tag at current level */
 		.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)),
+	{ ATF_POINTER, 2, offsetof(struct Stuff, anything),
+		.tag = (ASN_TAG_CLASS_CONTEXT | (2 << 2)),
 		.tag_mode = -1,	/* IMPLICIT tag at current level */
 		.type = (void *)&asn_DEF_anything,
 		.memb_constraints = 0,	/* Defer to actual type */
 		.name = "anything"
 		},
+	{ ATF_POINTER, 0, offsetof(struct Stuff, other),
+		.tag = -1 /* Ambiguous tag (CHOICE?) */,
+		.tag_mode = 0,
+		.type = (void *)&asn_DEF_other,
+		.memb_constraints = 0,	/* Defer to actual type */
+		.name = "other"
+		},
 };
 static ber_tlv_tag_t asn_DEF_Stuff_tags[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (17 << 2))
 };
 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 */
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* a at 26 */
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 }, /* trees at 23 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* anything at 34 */
+    { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 2, 0, 0 }, /* b at 28 */
 };
-static uint8_t asn_DEF_Stuff_mmap[(2 + (8 * sizeof(unsigned int)) - 1) / 8] = {
-	(0 << 7) | (0 << 6)
+static asn_TYPE_tag2member_t asn_DEF_Stuff_tag2el_cxer[] = {
+    { (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 }, /* trees at 23 */
+    { (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 1, 0, 0 }, /* anything at 34 */
+    { (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* a at 26 */
+};
+static uint8_t asn_DEF_Stuff_mmap[(3 + (8 * sizeof(unsigned int)) - 1) / 8] = {
+	(0 << 7) | (0 << 6) | (0 << 5)
 };
 static asn_SET_specifics_t asn_DEF_Stuff_specs = {
 	sizeof(struct Stuff),
 	offsetof(struct Stuff, _asn_ctx),
 	offsetof(struct Stuff, _presence_map),
 	asn_DEF_Stuff_tag2el,
-	2,	/* Count of tags in the map */
-	0,	/* Whether extensible */
+	4,	/* Count of tags in the map */
+	asn_DEF_Stuff_tag2el_cxer,
+	3,	/* Count of tags in the CANONICAL-XER map */
+	1,	/* Whether extensible */
 	(unsigned int *)asn_DEF_Stuff_mmap	/* Mandatory elements map */
 };
 asn_TYPE_descriptor_t asn_DEF_Stuff = {
@@ -369,7 +456,7 @@
 	sizeof(asn_DEF_Stuff_tags)
 		/sizeof(asn_DEF_Stuff_tags[0]), /* 1 */
 	asn_MBR_Stuff,
-	2,	/* Elements count */
+	3,	/* Elements count */
 	&asn_DEF_Stuff_specs	/* Additional specs */
 };
 
