constness fixes, round-trip and fuzz-testing for CHOICE
diff --git a/tests/tests-asn1c-compiler/95-choice-per-order-OK.asn1.-Pgen-PER b/tests/tests-asn1c-compiler/95-choice-per-order-OK.asn1.-Pgen-PER
index d22436e..8c759dc 100644
--- a/tests/tests-asn1c-compiler/95-choice-per-order-OK.asn1.-Pgen-PER
+++ b/tests/tests-asn1c-compiler/95-choice-per-order-OK.asn1.-Pgen-PER
@@ -78,7 +78,7 @@
 		.type = &asn_DEF_NULL,
 		.type_selector = 0,
 		{ .oer_constraints = 0, .per_constraints = 0, .general_constraints = 0 },
-		.default_value = 0,
+		0, 0, /* No default value */
 		.name = "null"
 		},
 	{ ATF_NOFLAGS, 0, offsetof(struct ch, choice.Int),
@@ -87,11 +87,12 @@
 		.type = &asn_DEF_NativeInteger,
 		.type_selector = 0,
 		{ .oer_constraints = 0, .per_constraints = 0, .general_constraints = 0 },
-		.default_value = 0,
+		0, 0, /* No default value */
 		.name = "int"
 		},
 };
-static const unsigned asn_MAP_ch_cmap_4[] = { 1, 0 };
+static const unsigned asn_MAP_ch_to_canonical_4[] = { 1, 0 };
+static const unsigned asn_MAP_ch_from_canonical_4[] = { 1, 0 };
 static const asn_TYPE_tag2member_t asn_MAP_ch_tag2el_4[] = {
     { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* int */
     { (ASN_TAG_CLASS_UNIVERSAL | (5 << 2)), 0, 0, 0 } /* null */
@@ -103,7 +104,8 @@
 	sizeof(((struct ch *)0)->present),
 	.tag2el = asn_MAP_ch_tag2el_4,
 	.tag2el_count = 2,	/* Count of tags in the map */
-	.canonical_order = asn_MAP_ch_cmap_4,	/* Canonically sorted */
+	.to_canonical_order = asn_MAP_ch_to_canonical_4,
+	.from_canonical_order = asn_MAP_ch_from_canonical_4,
 	.ext_start = -1	/* Extensions start */
 };
 static /* Use -fall-defs-global to expose */
@@ -128,7 +130,7 @@
 		.type = &asn_DEF_RELATIVE_OID,
 		.type_selector = 0,
 		{ .oer_constraints = 0, .per_constraints = 0, .general_constraints = 0 },
-		.default_value = 0,
+		0, 0, /* No default value */
 		.name = "roid"
 		},
 	{ ATF_NOFLAGS, 0, offsetof(struct Choice, choice.bitstr),
@@ -137,7 +139,7 @@
 		.type = &asn_DEF_BIT_STRING,
 		.type_selector = 0,
 		{ .oer_constraints = 0, .per_constraints = 0, .general_constraints = 0 },
-		.default_value = 0,
+		0, 0, /* No default value */
 		.name = "bitstr"
 		},
 	{ ATF_NOFLAGS, 0, offsetof(struct Choice, choice.ch),
@@ -146,7 +148,7 @@
 		.type = &asn_DEF_ch_4,
 		.type_selector = 0,
 		{ .oer_constraints = 0, .per_constraints = 0, .general_constraints = 0 },
-		.default_value = 0,
+		0, 0, /* No default value */
 		.name = "ch"
 		},
 	{ ATF_NOFLAGS, 0, offsetof(struct Choice, choice.Bool),
@@ -155,11 +157,12 @@
 		.type = &asn_DEF_BOOLEAN,
 		.type_selector = 0,
 		{ .oer_constraints = 0, .per_constraints = 0, .general_constraints = 0 },
-		.default_value = 0,
+		0, 0, /* No default value */
 		.name = "bool"
 		},
 };
-static const unsigned asn_MAP_Choice_cmap_1[] = { 2, 1, 0, 3 };
+static const unsigned asn_MAP_Choice_to_canonical_1[] = { 2, 1, 0, 3 };
+static const unsigned asn_MAP_Choice_from_canonical_1[] = { 2, 1, 0, 3 };
 static const asn_TYPE_tag2member_t asn_MAP_Choice_tag2el_1[] = {
     { (ASN_TAG_CLASS_UNIVERSAL | (1 << 2)), 3, 0, 0 }, /* bool */
     { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 2, 0, 0 }, /* int */
@@ -174,7 +177,8 @@
 	sizeof(((struct Choice *)0)->present),
 	.tag2el = asn_MAP_Choice_tag2el_1,
 	.tag2el_count = 5,	/* Count of tags in the map */
-	.canonical_order = asn_MAP_Choice_cmap_1,	/* Canonically sorted */
+	.to_canonical_order = asn_MAP_Choice_to_canonical_1,
+	.from_canonical_order = asn_MAP_Choice_from_canonical_1,
 	.ext_start = 3	/* Extensions start */
 };
 asn_TYPE_descriptor_t asn_DEF_Choice = {
@@ -240,7 +244,7 @@
 		.type = &asn_DEF_BIT_STRING,
 		.type_selector = 0,
 		{ .oer_constraints = 0, .per_constraints = 0, .general_constraints = 0 },
-		.default_value = 0,
+		0, 0, /* No default value */
 		.name = "bitstr"
 		},
 	{ ATF_NOFLAGS, 0, offsetof(struct Choice2, choice.roid),
@@ -249,7 +253,7 @@
 		.type = &asn_DEF_RELATIVE_OID,
 		.type_selector = 0,
 		{ .oer_constraints = 0, .per_constraints = 0, .general_constraints = 0 },
-		.default_value = 0,
+		0, 0, /* No default value */
 		.name = "roid"
 		},
 };
@@ -264,7 +268,7 @@
 	sizeof(((struct Choice2 *)0)->present),
 	.tag2el = asn_MAP_Choice2_tag2el_1,
 	.tag2el_count = 2,	/* Count of tags in the map */
-	.canonical_order = 0,
+	0, 0,
 	.ext_start = -1	/* Extensions start */
 };
 asn_TYPE_descriptor_t asn_DEF_Choice2 = {