upgrade: PER related changes

diff --git a/tests/42-real-life-OK.asn1.-PR b/tests/42-real-life-OK.asn1.-PR
index cd46263..4c41f53 100644
--- a/tests/42-real-life-OK.asn1.-PR
+++ b/tests/42-real-life-OK.asn1.-PR
@@ -40,7 +40,7 @@
 /*** <<< CODE [LogLine] >>> ***/
 
 static int
-memb_varsets_1_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+memb_varsets_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	size_t size;
 	
@@ -74,13 +74,15 @@
 		.tag_mode = 0,
 		.type = &asn_DEF_VariablePartSet,
 		.memb_constraints = 0,	/* Defer constraints checking to the member type */
+		.per_constraints = 0,	/* PER is not compiled, use -gen-PER */
+		.default_value = 0,
 		.name = ""
 		},
 };
-static ber_tlv_tag_t asn_DEF_varsets_3_tags[] = {
+static ber_tlv_tag_t asn_DEF_varsets_tags_3[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn_SET_OF_specifics_t asn_SPC_varsets_3_specs = {
+static asn_SET_OF_specifics_t asn_SPC_varsets_specs_3 = {
 	sizeof(struct varsets),
 	offsetof(struct varsets, _asn_ctx),
 	0,	/* XER encoding is XMLDelimitedItemList */
@@ -96,16 +98,18 @@
 	SEQUENCE_OF_encode_der,
 	SEQUENCE_OF_decode_xer,
 	SEQUENCE_OF_encode_xer,
+	0,	/* No PER decoder, -gen-PER to enable */
 	0,	/* Use generic outmost tag fetcher */
-	asn_DEF_varsets_3_tags,
-	sizeof(asn_DEF_varsets_3_tags)
-		/sizeof(asn_DEF_varsets_3_tags[0]), /* 1 */
-	asn_DEF_varsets_3_tags,	/* Same as above */
-	sizeof(asn_DEF_varsets_3_tags)
-		/sizeof(asn_DEF_varsets_3_tags[0]), /* 1 */
+	asn_DEF_varsets_tags_3,
+	sizeof(asn_DEF_varsets_tags_3)
+		/sizeof(asn_DEF_varsets_tags_3[0]), /* 1 */
+	asn_DEF_varsets_tags_3,	/* Same as above */
+	sizeof(asn_DEF_varsets_tags_3)
+		/sizeof(asn_DEF_varsets_tags_3[0]), /* 1 */
+	0,	/* No PER visible constraints */
 	asn_MBR_varsets_3,
 	1,	/* Single element */
-	&asn_SPC_varsets_3_specs	/* Additional specs */
+	&asn_SPC_varsets_specs_3	/* Additional specs */
 };
 
 static asn_TYPE_member_t asn_MBR_LogLine_1[] = {
@@ -114,28 +118,33 @@
 		.tag_mode = 0,
 		.type = &asn_DEF_IA5String,
 		.memb_constraints = 0,	/* Defer constraints checking to the member type */
+		.per_constraints = 0,	/* PER is not compiled, use -gen-PER */
+		.default_value = 0,
 		.name = "line-digest"
 		},
 	{ ATF_NOFLAGS, 0, offsetof(struct LogLine, varsets),
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
 		.tag_mode = 0,
 		.type = &asn_DEF_varsets_3,
-		.memb_constraints = memb_varsets_1_constraint,
+		.memb_constraints = memb_varsets_constraint_1,
+		.per_constraints = 0,	/* PER is not compiled, use -gen-PER */
+		.default_value = 0,
 		.name = "varsets"
 		},
 };
-static ber_tlv_tag_t asn_DEF_LogLine_1_tags[] = {
+static ber_tlv_tag_t asn_DEF_LogLine_tags_1[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn_TYPE_tag2member_t asn_MAP_LogLine_1_tag2el[] = {
+static asn_TYPE_tag2member_t asn_MAP_LogLine_tag2el_1[] = {
     { (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 asn_SEQUENCE_specifics_t asn_SPC_LogLine_1_specs = {
+static asn_SEQUENCE_specifics_t asn_SPC_LogLine_specs_1 = {
 	sizeof(struct LogLine),
 	offsetof(struct LogLine, _asn_ctx),
-	asn_MAP_LogLine_1_tag2el,
+	asn_MAP_LogLine_tag2el_1,
 	2,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
 	1,	/* Start extensions */
 	3	/* Stop extensions */
 };
@@ -149,16 +158,18 @@
 	SEQUENCE_encode_der,
 	SEQUENCE_decode_xer,
 	SEQUENCE_encode_xer,
+	0,	/* No PER decoder, -gen-PER to enable */
 	0,	/* Use generic outmost tag fetcher */
-	asn_DEF_LogLine_1_tags,
-	sizeof(asn_DEF_LogLine_1_tags)
-		/sizeof(asn_DEF_LogLine_1_tags[0]), /* 1 */
-	asn_DEF_LogLine_1_tags,	/* Same as above */
-	sizeof(asn_DEF_LogLine_1_tags)
-		/sizeof(asn_DEF_LogLine_1_tags[0]), /* 1 */
+	asn_DEF_LogLine_tags_1,
+	sizeof(asn_DEF_LogLine_tags_1)
+		/sizeof(asn_DEF_LogLine_tags_1[0]), /* 1 */
+	asn_DEF_LogLine_tags_1,	/* Same as above */
+	sizeof(asn_DEF_LogLine_tags_1)
+		/sizeof(asn_DEF_LogLine_tags_1[0]), /* 1 */
+	0,	/* No PER visible constraints */
 	asn_MBR_LogLine_1,
 	2,	/* Elements count */
-	&asn_SPC_LogLine_1_specs	/* Additional specs */
+	&asn_SPC_LogLine_specs_1	/* Additional specs */
 };
 
 
@@ -203,7 +214,7 @@
 /*** <<< CODE [VariablePartSet] >>> ***/
 
 static int
-memb_vparts_1_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+memb_vparts_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	
 	if(!sptr) {
@@ -230,13 +241,15 @@
 		.tag_mode = 0,
 		.type = &asn_DEF_VariablePart,
 		.memb_constraints = 0,	/* Defer constraints checking to the member type */
+		.per_constraints = 0,	/* PER is not compiled, use -gen-PER */
+		.default_value = 0,
 		.name = ""
 		},
 };
-static ber_tlv_tag_t asn_DEF_vparts_2_tags[] = {
+static ber_tlv_tag_t asn_DEF_vparts_tags_2[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn_SET_OF_specifics_t asn_SPC_vparts_2_specs = {
+static asn_SET_OF_specifics_t asn_SPC_vparts_specs_2 = {
 	sizeof(struct vparts),
 	offsetof(struct vparts, _asn_ctx),
 	2,	/* XER encoding is XMLValueList */
@@ -252,16 +265,18 @@
 	SEQUENCE_OF_encode_der,
 	SEQUENCE_OF_decode_xer,
 	SEQUENCE_OF_encode_xer,
+	0,	/* No PER decoder, -gen-PER to enable */
 	0,	/* Use generic outmost tag fetcher */
-	asn_DEF_vparts_2_tags,
-	sizeof(asn_DEF_vparts_2_tags)
-		/sizeof(asn_DEF_vparts_2_tags[0]), /* 1 */
-	asn_DEF_vparts_2_tags,	/* Same as above */
-	sizeof(asn_DEF_vparts_2_tags)
-		/sizeof(asn_DEF_vparts_2_tags[0]), /* 1 */
+	asn_DEF_vparts_tags_2,
+	sizeof(asn_DEF_vparts_tags_2)
+		/sizeof(asn_DEF_vparts_tags_2[0]), /* 1 */
+	asn_DEF_vparts_tags_2,	/* Same as above */
+	sizeof(asn_DEF_vparts_tags_2)
+		/sizeof(asn_DEF_vparts_tags_2[0]), /* 1 */
+	0,	/* No PER visible constraints */
 	asn_MBR_vparts_2,
 	1,	/* Single element */
-	&asn_SPC_vparts_2_specs	/* Additional specs */
+	&asn_SPC_vparts_specs_2	/* Additional specs */
 };
 
 static asn_TYPE_member_t asn_MBR_VariablePartSet_1[] = {
@@ -269,7 +284,9 @@
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
 		.tag_mode = 0,
 		.type = &asn_DEF_vparts_2,
-		.memb_constraints = memb_vparts_1_constraint,
+		.memb_constraints = memb_vparts_constraint_1,
+		.per_constraints = 0,	/* PER is not compiled, use -gen-PER */
+		.default_value = 0,
 		.name = "vparts"
 		},
 	{ ATF_NOFLAGS, 0, offsetof(struct VariablePartSet, resolution),
@@ -277,21 +294,24 @@
 		.tag_mode = 0,
 		.type = &asn_DEF_ActionItem,
 		.memb_constraints = 0,	/* Defer constraints checking to the member type */
+		.per_constraints = 0,	/* PER is not compiled, use -gen-PER */
+		.default_value = 0,
 		.name = "resolution"
 		},
 };
-static ber_tlv_tag_t asn_DEF_VariablePartSet_1_tags[] = {
+static ber_tlv_tag_t asn_DEF_VariablePartSet_tags_1[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn_TYPE_tag2member_t asn_MAP_VariablePartSet_1_tag2el[] = {
+static asn_TYPE_tag2member_t asn_MAP_VariablePartSet_tag2el_1[] = {
     { (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 asn_SEQUENCE_specifics_t asn_SPC_VariablePartSet_1_specs = {
+static asn_SEQUENCE_specifics_t asn_SPC_VariablePartSet_specs_1 = {
 	sizeof(struct VariablePartSet),
 	offsetof(struct VariablePartSet, _asn_ctx),
-	asn_MAP_VariablePartSet_1_tag2el,
+	asn_MAP_VariablePartSet_tag2el_1,
 	2,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
 	1,	/* Start extensions */
 	3	/* Stop extensions */
 };
@@ -305,16 +325,18 @@
 	SEQUENCE_encode_der,
 	SEQUENCE_decode_xer,
 	SEQUENCE_encode_xer,
+	0,	/* No PER decoder, -gen-PER to enable */
 	0,	/* Use generic outmost tag fetcher */
-	asn_DEF_VariablePartSet_1_tags,
-	sizeof(asn_DEF_VariablePartSet_1_tags)
-		/sizeof(asn_DEF_VariablePartSet_1_tags[0]), /* 1 */
-	asn_DEF_VariablePartSet_1_tags,	/* Same as above */
-	sizeof(asn_DEF_VariablePartSet_1_tags)
-		/sizeof(asn_DEF_VariablePartSet_1_tags[0]), /* 1 */
+	asn_DEF_VariablePartSet_tags_1,
+	sizeof(asn_DEF_VariablePartSet_tags_1)
+		/sizeof(asn_DEF_VariablePartSet_tags_1[0]), /* 1 */
+	asn_DEF_VariablePartSet_tags_1,	/* Same as above */
+	sizeof(asn_DEF_VariablePartSet_tags_1)
+		/sizeof(asn_DEF_VariablePartSet_tags_1[0]), /* 1 */
+	0,	/* No PER visible constraints */
 	asn_MBR_VariablePartSet_1,
 	2,	/* Elements count */
-	&asn_SPC_VariablePartSet_1_specs	/* Additional specs */
+	&asn_SPC_VariablePartSet_specs_1	/* Additional specs */
 };
 
 
@@ -374,7 +396,7 @@
 /*** <<< CODE [VariablePart] >>> ***/
 
 static int
-memb_vset_1_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
+memb_vset_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
 			asn_app_consume_bytes_f *app_errlog, void *app_key) {
 	size_t size;
 	
@@ -408,13 +430,15 @@
 		.tag_mode = 0,
 		.type = &asn_DEF_VisibleString,
 		.memb_constraints = 0,	/* Defer constraints checking to the member type */
+		.per_constraints = 0,	/* PER is not compiled, use -gen-PER */
+		.default_value = 0,
 		.name = ""
 		},
 };
-static ber_tlv_tag_t asn_DEF_vset_2_tags[] = {
+static ber_tlv_tag_t asn_DEF_vset_tags_2[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (17 << 2))
 };
-static asn_SET_OF_specifics_t asn_SPC_vset_2_specs = {
+static asn_SET_OF_specifics_t asn_SPC_vset_specs_2 = {
 	sizeof(struct vset),
 	offsetof(struct vset, _asn_ctx),
 	0,	/* XER encoding is XMLDelimitedItemList */
@@ -430,16 +454,18 @@
 	SET_OF_encode_der,
 	SET_OF_decode_xer,
 	SET_OF_encode_xer,
+	0,	/* No PER decoder, -gen-PER to enable */
 	0,	/* Use generic outmost tag fetcher */
-	asn_DEF_vset_2_tags,
-	sizeof(asn_DEF_vset_2_tags)
-		/sizeof(asn_DEF_vset_2_tags[0]), /* 1 */
-	asn_DEF_vset_2_tags,	/* Same as above */
-	sizeof(asn_DEF_vset_2_tags)
-		/sizeof(asn_DEF_vset_2_tags[0]), /* 1 */
+	asn_DEF_vset_tags_2,
+	sizeof(asn_DEF_vset_tags_2)
+		/sizeof(asn_DEF_vset_tags_2[0]), /* 1 */
+	asn_DEF_vset_tags_2,	/* Same as above */
+	sizeof(asn_DEF_vset_tags_2)
+		/sizeof(asn_DEF_vset_tags_2[0]), /* 1 */
+	0,	/* No PER visible constraints */
 	asn_MBR_vset_2,
 	1,	/* Single element */
-	&asn_SPC_vset_2_specs	/* Additional specs */
+	&asn_SPC_vset_specs_2	/* Additional specs */
 };
 
 static asn_TYPE_member_t asn_MBR_vrange_4[] = {
@@ -448,6 +474,8 @@
 		.tag_mode = 0,
 		.type = &asn_DEF_VisibleString,
 		.memb_constraints = 0,	/* Defer constraints checking to the member type */
+		.per_constraints = 0,	/* PER is not compiled, use -gen-PER */
+		.default_value = 0,
 		.name = "from"
 		},
 	{ ATF_NOFLAGS, 0, offsetof(struct vrange, to),
@@ -455,21 +483,24 @@
 		.tag_mode = 0,
 		.type = &asn_DEF_VisibleString,
 		.memb_constraints = 0,	/* Defer constraints checking to the member type */
+		.per_constraints = 0,	/* PER is not compiled, use -gen-PER */
+		.default_value = 0,
 		.name = "to"
 		},
 };
-static ber_tlv_tag_t asn_DEF_vrange_4_tags[] = {
+static ber_tlv_tag_t asn_DEF_vrange_tags_4[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn_TYPE_tag2member_t asn_MAP_vrange_4_tag2el[] = {
+static asn_TYPE_tag2member_t asn_MAP_vrange_tag2el_4[] = {
     { (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 asn_SEQUENCE_specifics_t asn_SPC_vrange_4_specs = {
+static asn_SEQUENCE_specifics_t asn_SPC_vrange_specs_4 = {
 	sizeof(struct vrange),
 	offsetof(struct vrange, _asn_ctx),
-	asn_MAP_vrange_4_tag2el,
+	asn_MAP_vrange_tag2el_4,
 	2,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
 	1,	/* Start extensions */
 	3	/* Stop extensions */
 };
@@ -484,16 +515,18 @@
 	SEQUENCE_encode_der,
 	SEQUENCE_decode_xer,
 	SEQUENCE_encode_xer,
+	0,	/* No PER decoder, -gen-PER to enable */
 	0,	/* Use generic outmost tag fetcher */
-	asn_DEF_vrange_4_tags,
-	sizeof(asn_DEF_vrange_4_tags)
-		/sizeof(asn_DEF_vrange_4_tags[0]), /* 1 */
-	asn_DEF_vrange_4_tags,	/* Same as above */
-	sizeof(asn_DEF_vrange_4_tags)
-		/sizeof(asn_DEF_vrange_4_tags[0]), /* 1 */
+	asn_DEF_vrange_tags_4,
+	sizeof(asn_DEF_vrange_tags_4)
+		/sizeof(asn_DEF_vrange_tags_4[0]), /* 1 */
+	asn_DEF_vrange_tags_4,	/* Same as above */
+	sizeof(asn_DEF_vrange_tags_4)
+		/sizeof(asn_DEF_vrange_tags_4[0]), /* 1 */
+	0,	/* No PER visible constraints */
 	asn_MBR_vrange_4,
 	2,	/* Elements count */
-	&asn_SPC_vrange_4_specs	/* Additional specs */
+	&asn_SPC_vrange_specs_4	/* Additional specs */
 };
 
 static asn_TYPE_member_t asn_MBR_VariablePart_1[] = {
@@ -501,7 +534,9 @@
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (17 << 2)),
 		.tag_mode = 0,
 		.type = &asn_DEF_vset_2,
-		.memb_constraints = memb_vset_1_constraint,
+		.memb_constraints = memb_vset_constraint_1,
+		.per_constraints = 0,	/* PER is not compiled, use -gen-PER */
+		.default_value = 0,
 		.name = "vset"
 		},
 	{ ATF_NOFLAGS, 0, offsetof(struct VariablePart, choice.vrange),
@@ -509,21 +544,24 @@
 		.tag_mode = 0,
 		.type = &asn_DEF_vrange_4,
 		.memb_constraints = 0,	/* Defer constraints checking to the member type */
+		.per_constraints = 0,	/* PER is not compiled, use -gen-PER */
+		.default_value = 0,
 		.name = "vrange"
 		},
 };
-static asn_TYPE_tag2member_t asn_MAP_VariablePart_1_tag2el[] = {
+static asn_TYPE_tag2member_t asn_MAP_VariablePart_tag2el_1[] = {
     { (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 asn_CHOICE_specifics_t asn_SPC_VariablePart_1_specs = {
+static asn_CHOICE_specifics_t asn_SPC_VariablePart_specs_1 = {
 	sizeof(struct VariablePart),
 	offsetof(struct VariablePart, _asn_ctx),
 	offsetof(struct VariablePart, present),
 	sizeof(((struct VariablePart *)0)->present),
-	asn_MAP_VariablePart_1_tag2el,
+	asn_MAP_VariablePart_tag2el_1,
 	2,	/* Count of tags in the map */
-	1	/* Whether extensible */
+	.canonical_order = 0,
+	.ext_start = 2	/* Extensions start */
 };
 asn_TYPE_descriptor_t asn_DEF_VariablePart = {
 	"VariablePart",
@@ -535,14 +573,16 @@
 	CHOICE_encode_der,
 	CHOICE_decode_xer,
 	CHOICE_encode_xer,
+	0,	/* No PER decoder, -gen-PER to enable */
 	CHOICE_outmost_tag,
 	0,	/* No effective tags (pointer) */
 	0,	/* No effective tags (count) */
 	0,	/* No tags (pointer) */
 	0,	/* No tags (count) */
+	0,	/* No PER visible constraints */
 	asn_MBR_VariablePart_1,
 	2,	/* Elements count */
-	&asn_SPC_VariablePart_1_specs	/* Additional specs */
+	&asn_SPC_VariablePart_specs_1	/* Additional specs */
 };
 
 
@@ -622,6 +662,9 @@
 	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->uper_decoder   = asn_DEF_ENUMERATED.uper_decoder;
+	if(!td->per_constraints)
+		td->per_constraints = asn_DEF_ENUMERATED.per_constraints;
 	td->elements       = asn_DEF_ENUMERATED.elements;
 	td->elements_count = asn_DEF_ENUMERATED.elements_count;
      /* td->specifics      = asn_DEF_ENUMERATED.specifics;	// Defined explicitly */
@@ -674,26 +717,26 @@
 
 /*** <<< STAT-DEFS [ActionItem] >>> ***/
 
-static asn_INTEGER_enum_map_t asn_MAP_accept_as_2_value2enum[] = {
+static asn_INTEGER_enum_map_t asn_MAP_accept_as_value2enum_2[] = {
 	{ 0,	7,	"unknown" },
 	{ 1,	4,	"safe" },
 	{ 2,	6,	"unsafe" }
 	/* This list is extensible */
 };
-static unsigned int asn_MAP_accept_as_2_enum2value[] = {
+static unsigned int asn_MAP_accept_as_enum2value_2[] = {
 	1,	/* safe(1) */
 	0,	/* unknown(0) */
 	2	/* unsafe(2) */
 	/* This list is extensible */
 };
-static asn_INTEGER_specifics_t asn_SPC_accept_as_2_specs = {
-	asn_MAP_accept_as_2_value2enum,	/* "tag" => N; sorted by tag */
-	asn_MAP_accept_as_2_enum2value,	/* N => "tag"; sorted by N */
+static asn_INTEGER_specifics_t asn_SPC_accept_as_specs_2 = {
+	asn_MAP_accept_as_value2enum_2,	/* "tag" => N; sorted by tag */
+	asn_MAP_accept_as_enum2value_2,	/* N => "tag"; sorted by N */
 	3,	/* Number of elements in the maps */
-	1,	/* Enumeration is extensible */
+	4,	/* Extensions before this member */
 	1	/* Strict enumeration */
 };
-static ber_tlv_tag_t asn_DEF_accept_as_2_tags[] = {
+static ber_tlv_tag_t asn_DEF_accept_as_tags_2[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
 };
 static /* Use -fall-defs-global to expose */
@@ -707,15 +750,17 @@
 	accept_as_2_encode_der,
 	accept_as_2_decode_xer,
 	accept_as_2_encode_xer,
+	0,	/* No PER decoder, -gen-PER to enable */
 	0,	/* Use generic outmost tag fetcher */
-	asn_DEF_accept_as_2_tags,
-	sizeof(asn_DEF_accept_as_2_tags)
-		/sizeof(asn_DEF_accept_as_2_tags[0]), /* 1 */
-	asn_DEF_accept_as_2_tags,	/* Same as above */
-	sizeof(asn_DEF_accept_as_2_tags)
-		/sizeof(asn_DEF_accept_as_2_tags[0]), /* 1 */
+	asn_DEF_accept_as_tags_2,
+	sizeof(asn_DEF_accept_as_tags_2)
+		/sizeof(asn_DEF_accept_as_tags_2[0]), /* 1 */
+	asn_DEF_accept_as_tags_2,	/* Same as above */
+	sizeof(asn_DEF_accept_as_tags_2)
+		/sizeof(asn_DEF_accept_as_tags_2[0]), /* 1 */
+	0,	/* No PER visible constraints */
 	0, 0,	/* Defined elsewhere */
-	&asn_SPC_accept_as_2_specs	/* Additional specs */
+	&asn_SPC_accept_as_specs_2	/* Additional specs */
 };
 
 static asn_TYPE_member_t asn_MBR_email_9[] = {
@@ -724,13 +769,15 @@
 		.tag_mode = 0,
 		.type = &asn_DEF_VisibleString,
 		.memb_constraints = 0,	/* Defer constraints checking to the member type */
+		.per_constraints = 0,	/* PER is not compiled, use -gen-PER */
+		.default_value = 0,
 		.name = ""
 		},
 };
-static ber_tlv_tag_t asn_DEF_email_9_tags[] = {
+static ber_tlv_tag_t asn_DEF_email_tags_9[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (17 << 2))
 };
-static asn_SET_OF_specifics_t asn_SPC_email_9_specs = {
+static asn_SET_OF_specifics_t asn_SPC_email_specs_9 = {
 	sizeof(struct email),
 	offsetof(struct email, _asn_ctx),
 	0,	/* XER encoding is XMLDelimitedItemList */
@@ -746,16 +793,18 @@
 	SET_OF_encode_der,
 	SET_OF_decode_xer,
 	SET_OF_encode_xer,
+	0,	/* No PER decoder, -gen-PER to enable */
 	0,	/* Use generic outmost tag fetcher */
-	asn_DEF_email_9_tags,
-	sizeof(asn_DEF_email_9_tags)
-		/sizeof(asn_DEF_email_9_tags[0]), /* 1 */
-	asn_DEF_email_9_tags,	/* Same as above */
-	sizeof(asn_DEF_email_9_tags)
-		/sizeof(asn_DEF_email_9_tags[0]), /* 1 */
+	asn_DEF_email_tags_9,
+	sizeof(asn_DEF_email_tags_9)
+		/sizeof(asn_DEF_email_tags_9[0]), /* 1 */
+	asn_DEF_email_tags_9,	/* Same as above */
+	sizeof(asn_DEF_email_tags_9)
+		/sizeof(asn_DEF_email_tags_9[0]), /* 1 */
+	0,	/* No PER visible constraints */
 	asn_MBR_email_9,
 	1,	/* Single element */
-	&asn_SPC_email_9_specs	/* Additional specs */
+	&asn_SPC_email_specs_9	/* Additional specs */
 };
 
 static asn_TYPE_member_t asn_MBR_notify_7[] = {
@@ -764,6 +813,8 @@
 		.tag_mode = 0,
 		.type = &asn_DEF_BOOLEAN,
 		.memb_constraints = 0,	/* Defer constraints checking to the member type */
+		.per_constraints = 0,	/* PER is not compiled, use -gen-PER */
+		.default_value = 0,
 		.name = "critical"
 		},
 	{ ATF_NOFLAGS, 0, offsetof(struct notify, email),
@@ -771,21 +822,24 @@
 		.tag_mode = 0,
 		.type = &asn_DEF_email_9,
 		.memb_constraints = 0,	/* Defer constraints checking to the member type */
+		.per_constraints = 0,	/* PER is not compiled, use -gen-PER */
+		.default_value = 0,
 		.name = "email"
 		},
 };
-static ber_tlv_tag_t asn_DEF_notify_7_tags[] = {
+static ber_tlv_tag_t asn_DEF_notify_tags_7[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn_TYPE_tag2member_t asn_MAP_notify_7_tag2el[] = {
+static asn_TYPE_tag2member_t asn_MAP_notify_tag2el_7[] = {
     { (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 asn_SEQUENCE_specifics_t asn_SPC_notify_7_specs = {
+static asn_SEQUENCE_specifics_t asn_SPC_notify_specs_7 = {
 	sizeof(struct notify),
 	offsetof(struct notify, _asn_ctx),
-	asn_MAP_notify_7_tag2el,
+	asn_MAP_notify_tag2el_7,
 	2,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
 	1,	/* Start extensions */
 	3	/* Stop extensions */
 };
@@ -800,16 +854,18 @@
 	SEQUENCE_encode_der,
 	SEQUENCE_decode_xer,
 	SEQUENCE_encode_xer,
+	0,	/* No PER decoder, -gen-PER to enable */
 	0,	/* Use generic outmost tag fetcher */
-	asn_DEF_notify_7_tags,
-	sizeof(asn_DEF_notify_7_tags)
-		/sizeof(asn_DEF_notify_7_tags[0]), /* 1 */
-	asn_DEF_notify_7_tags,	/* Same as above */
-	sizeof(asn_DEF_notify_7_tags)
-		/sizeof(asn_DEF_notify_7_tags[0]), /* 1 */
+	asn_DEF_notify_tags_7,
+	sizeof(asn_DEF_notify_tags_7)
+		/sizeof(asn_DEF_notify_tags_7[0]), /* 1 */
+	asn_DEF_notify_tags_7,	/* Same as above */
+	sizeof(asn_DEF_notify_tags_7)
+		/sizeof(asn_DEF_notify_tags_7[0]), /* 1 */
+	0,	/* No PER visible constraints */
 	asn_MBR_notify_7,
 	2,	/* Elements count */
-	&asn_SPC_notify_7_specs	/* Additional specs */
+	&asn_SPC_notify_specs_7	/* Additional specs */
 };
 
 static asn_TYPE_member_t asn_MBR_ActionItem_1[] = {
@@ -818,6 +874,8 @@
 		.tag_mode = 0,
 		.type = &asn_DEF_accept_as_2,
 		.memb_constraints = 0,	/* Defer constraints checking to the member type */
+		.per_constraints = 0,	/* PER is not compiled, use -gen-PER */
+		.default_value = 0,
 		.name = "accept-as"
 		},
 	{ ATF_POINTER, 1, offsetof(struct ActionItem, notify),
@@ -825,21 +883,24 @@
 		.tag_mode = 0,
 		.type = &asn_DEF_notify_7,
 		.memb_constraints = 0,	/* Defer constraints checking to the member type */
+		.per_constraints = 0,	/* PER is not compiled, use -gen-PER */
+		.default_value = 0,
 		.name = "notify"
 		},
 };
-static ber_tlv_tag_t asn_DEF_ActionItem_1_tags[] = {
+static ber_tlv_tag_t asn_DEF_ActionItem_tags_1[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static asn_TYPE_tag2member_t asn_MAP_ActionItem_1_tag2el[] = {
+static asn_TYPE_tag2member_t asn_MAP_ActionItem_tag2el_1[] = {
     { (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 asn_SEQUENCE_specifics_t asn_SPC_ActionItem_1_specs = {
+static asn_SEQUENCE_specifics_t asn_SPC_ActionItem_specs_1 = {
 	sizeof(struct ActionItem),
 	offsetof(struct ActionItem, _asn_ctx),
-	asn_MAP_ActionItem_1_tag2el,
+	asn_MAP_ActionItem_tag2el_1,
 	2,	/* Count of tags in the map */
+	0, 0, 0,	/* Optional elements (not needed) */
 	1,	/* Start extensions */
 	3	/* Stop extensions */
 };
@@ -853,15 +914,17 @@
 	SEQUENCE_encode_der,
 	SEQUENCE_decode_xer,
 	SEQUENCE_encode_xer,
+	0,	/* No PER decoder, -gen-PER to enable */
 	0,	/* Use generic outmost tag fetcher */
-	asn_DEF_ActionItem_1_tags,
-	sizeof(asn_DEF_ActionItem_1_tags)
-		/sizeof(asn_DEF_ActionItem_1_tags[0]), /* 1 */
-	asn_DEF_ActionItem_1_tags,	/* Same as above */
-	sizeof(asn_DEF_ActionItem_1_tags)
-		/sizeof(asn_DEF_ActionItem_1_tags[0]), /* 1 */
+	asn_DEF_ActionItem_tags_1,
+	sizeof(asn_DEF_ActionItem_tags_1)
+		/sizeof(asn_DEF_ActionItem_tags_1[0]), /* 1 */
+	asn_DEF_ActionItem_tags_1,	/* Same as above */
+	sizeof(asn_DEF_ActionItem_tags_1)
+		/sizeof(asn_DEF_ActionItem_tags_1[0]), /* 1 */
+	0,	/* No PER visible constraints */
 	asn_MBR_ActionItem_1,
 	2,	/* Elements count */
-	&asn_SPC_ActionItem_1_specs	/* Additional specs */
+	&asn_SPC_ActionItem_specs_1	/* Additional specs */
 };