regenerated
diff --git a/tests/tests-asn1c-compiler/50-constraint-OK.asn1.-Pgen-PER b/tests/tests-asn1c-compiler/50-constraint-OK.asn1.-Pgen-PER
index 4537dda..c1b6fd8 100644
--- a/tests/tests-asn1c-compiler/50-constraint-OK.asn1.-Pgen-PER
+++ b/tests/tests-asn1c-compiler/50-constraint-OK.asn1.-Pgen-PER
@@ -36,15 +36,13 @@
 	"Int1",
 	"Int1",
 	&asn_OP_NativeInteger,
-	NativeInteger_constraint,
 	asn_DEF_Int1_tags_1,
 	sizeof(asn_DEF_Int1_tags_1)
 		/sizeof(asn_DEF_Int1_tags_1[0]), /* 1 */
 	asn_DEF_Int1_tags_1,	/* Same as above */
 	sizeof(asn_DEF_Int1_tags_1)
 		/sizeof(asn_DEF_Int1_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	0,	/* No PER visible constraints */
+	{ 0, 0, NativeInteger_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -121,15 +119,13 @@
 	"Int2",
 	"Int2",
 	&asn_OP_NativeInteger,
-	Int2_constraint,
 	asn_DEF_Int2_tags_1,
 	sizeof(asn_DEF_Int2_tags_1)
 		/sizeof(asn_DEF_Int2_tags_1[0]), /* 1 */
 	asn_DEF_Int2_tags_1,	/* Same as above */
 	sizeof(asn_DEF_Int2_tags_1)
 		/sizeof(asn_DEF_Int2_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	&asn_PER_type_Int2_constr_1,
+	{ 0, &asn_PER_type_Int2_constr_1, Int2_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -206,15 +202,13 @@
 	"Int3",
 	"Int3",
 	&asn_OP_NativeInteger,
-	Int3_constraint,
 	asn_DEF_Int3_tags_1,
 	sizeof(asn_DEF_Int3_tags_1)
 		/sizeof(asn_DEF_Int3_tags_1[0]), /* 1 */
 	asn_DEF_Int3_tags_1,	/* Same as above */
 	sizeof(asn_DEF_Int3_tags_1)
 		/sizeof(asn_DEF_Int3_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	&asn_PER_type_Int3_constr_1,
+	{ 0, &asn_PER_type_Int3_constr_1, Int3_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -291,15 +285,13 @@
 	"Int4",
 	"Int4",
 	&asn_OP_NativeInteger,
-	Int4_constraint,
 	asn_DEF_Int4_tags_1,
 	sizeof(asn_DEF_Int4_tags_1)
 		/sizeof(asn_DEF_Int4_tags_1[0]), /* 1 */
 	asn_DEF_Int4_tags_1,	/* Same as above */
 	sizeof(asn_DEF_Int4_tags_1)
 		/sizeof(asn_DEF_Int4_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	&asn_PER_type_Int4_constr_1,
+	{ 0, &asn_PER_type_Int4_constr_1, Int4_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -376,15 +368,13 @@
 	"Int5",
 	"Int5",
 	&asn_OP_NativeInteger,
-	Int5_constraint,
 	asn_DEF_Int5_tags_1,
 	sizeof(asn_DEF_Int5_tags_1)
 		/sizeof(asn_DEF_Int5_tags_1[0]), /* 1 */
 	asn_DEF_Int5_tags_1,	/* Same as above */
 	sizeof(asn_DEF_Int5_tags_1)
 		/sizeof(asn_DEF_Int5_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	&asn_PER_type_Int5_constr_1,
+	{ 0, &asn_PER_type_Int5_constr_1, Int5_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -460,15 +450,13 @@
 	"ExtensibleExtensions",
 	"ExtensibleExtensions",
 	&asn_OP_NativeInteger,
-	ExtensibleExtensions_constraint,
 	asn_DEF_ExtensibleExtensions_tags_1,
 	sizeof(asn_DEF_ExtensibleExtensions_tags_1)
 		/sizeof(asn_DEF_ExtensibleExtensions_tags_1[0]), /* 1 */
 	asn_DEF_ExtensibleExtensions_tags_1,	/* Same as above */
 	sizeof(asn_DEF_ExtensibleExtensions_tags_1)
 		/sizeof(asn_DEF_ExtensibleExtensions_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	&asn_PER_type_ExtensibleExtensions_constr_1,
+	{ 0, &asn_PER_type_ExtensibleExtensions_constr_1, ExtensibleExtensions_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -511,15 +499,13 @@
 	"Str1",
 	"Str1",
 	&asn_OP_IA5String,
-	IA5String_constraint,
 	asn_DEF_Str1_tags_1,
 	sizeof(asn_DEF_Str1_tags_1)
 		/sizeof(asn_DEF_Str1_tags_1[0]), /* 1 */
 	asn_DEF_Str1_tags_1,	/* Same as above */
 	sizeof(asn_DEF_Str1_tags_1)
 		/sizeof(asn_DEF_Str1_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	0,	/* No PER visible constraints */
+	{ 0, 0, IA5String_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -614,15 +600,13 @@
 	"Str2",
 	"Str2",
 	&asn_OP_IA5String,
-	Str2_constraint,
 	asn_DEF_Str2_tags_1,
 	sizeof(asn_DEF_Str2_tags_1)
 		/sizeof(asn_DEF_Str2_tags_1[0]), /* 1 */
 	asn_DEF_Str2_tags_1,	/* Same as above */
 	sizeof(asn_DEF_Str2_tags_1)
 		/sizeof(asn_DEF_Str2_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	&asn_PER_type_Str2_constr_1,
+	{ 0, &asn_PER_type_Str2_constr_1, Str2_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -741,15 +725,13 @@
 	"Str3",
 	"Str3",
 	&asn_OP_IA5String,
-	Str3_constraint,
 	asn_DEF_Str3_tags_1,
 	sizeof(asn_DEF_Str3_tags_1)
 		/sizeof(asn_DEF_Str3_tags_1[0]), /* 1 */
 	asn_DEF_Str3_tags_1,	/* Same as above */
 	sizeof(asn_DEF_Str3_tags_1)
 		/sizeof(asn_DEF_Str3_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	&asn_PER_type_Str3_constr_1,
+	{ 0, &asn_PER_type_Str3_constr_1, Str3_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -840,15 +822,13 @@
 	"Str4",
 	"Str4",
 	&asn_OP_IA5String,
-	Str4_constraint,
 	asn_DEF_Str4_tags_1,
 	sizeof(asn_DEF_Str4_tags_1)
 		/sizeof(asn_DEF_Str4_tags_1[0]), /* 1 */
 	asn_DEF_Str4_tags_1,	/* Same as above */
 	sizeof(asn_DEF_Str4_tags_1)
 		/sizeof(asn_DEF_Str4_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	&asn_PER_type_Str4_constr_1,
+	{ 0, &asn_PER_type_Str4_constr_1, Str4_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -940,15 +920,13 @@
 	"PER-Visible",
 	"PER-Visible",
 	&asn_OP_IA5String,
-	PER_Visible_constraint,
 	asn_DEF_PER_Visible_tags_1,
 	sizeof(asn_DEF_PER_Visible_tags_1)
 		/sizeof(asn_DEF_PER_Visible_tags_1[0]), /* 1 */
 	asn_DEF_PER_Visible_tags_1,	/* Same as above */
 	sizeof(asn_DEF_PER_Visible_tags_1)
 		/sizeof(asn_DEF_PER_Visible_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	&asn_PER_type_PER_Visible_constr_1,
+	{ 0, &asn_PER_type_PER_Visible_constr_1, PER_Visible_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -1039,15 +1017,13 @@
 	"PER-Visible-2",
 	"PER-Visible-2",
 	&asn_OP_IA5String,
-	PER_Visible_2_constraint,
 	asn_DEF_PER_Visible_2_tags_1,
 	sizeof(asn_DEF_PER_Visible_2_tags_1)
 		/sizeof(asn_DEF_PER_Visible_2_tags_1[0]), /* 1 */
 	asn_DEF_PER_Visible_2_tags_1,	/* Same as above */
 	sizeof(asn_DEF_PER_Visible_2_tags_1)
 		/sizeof(asn_DEF_PER_Visible_2_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	&asn_PER_type_PER_Visible_2_constr_1,
+	{ 0, &asn_PER_type_PER_Visible_2_constr_1, PER_Visible_2_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -1138,15 +1114,13 @@
 	"Not-PER-Visible-1",
 	"Not-PER-Visible-1",
 	&asn_OP_IA5String,
-	Not_PER_Visible_1_constraint,
 	asn_DEF_Not_PER_Visible_1_tags_1,
 	sizeof(asn_DEF_Not_PER_Visible_1_tags_1)
 		/sizeof(asn_DEF_Not_PER_Visible_1_tags_1[0]), /* 1 */
 	asn_DEF_Not_PER_Visible_1_tags_1,	/* Same as above */
 	sizeof(asn_DEF_Not_PER_Visible_1_tags_1)
 		/sizeof(asn_DEF_Not_PER_Visible_1_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	&asn_PER_type_Not_PER_Visible_1_constr_1,
+	{ 0, &asn_PER_type_Not_PER_Visible_1_constr_1, Not_PER_Visible_1_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -1237,15 +1211,13 @@
 	"Not-PER-Visible-2",
 	"Not-PER-Visible-2",
 	&asn_OP_IA5String,
-	Not_PER_Visible_2_constraint,
 	asn_DEF_Not_PER_Visible_2_tags_1,
 	sizeof(asn_DEF_Not_PER_Visible_2_tags_1)
 		/sizeof(asn_DEF_Not_PER_Visible_2_tags_1[0]), /* 1 */
 	asn_DEF_Not_PER_Visible_2_tags_1,	/* Same as above */
 	sizeof(asn_DEF_Not_PER_Visible_2_tags_1)
 		/sizeof(asn_DEF_Not_PER_Visible_2_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	&asn_PER_type_Not_PER_Visible_2_constr_1,
+	{ 0, &asn_PER_type_Not_PER_Visible_2_constr_1, Not_PER_Visible_2_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -1336,15 +1308,13 @@
 	"Not-PER-Visible-3",
 	"Not-PER-Visible-3",
 	&asn_OP_IA5String,
-	Not_PER_Visible_3_constraint,
 	asn_DEF_Not_PER_Visible_3_tags_1,
 	sizeof(asn_DEF_Not_PER_Visible_3_tags_1)
 		/sizeof(asn_DEF_Not_PER_Visible_3_tags_1[0]), /* 1 */
 	asn_DEF_Not_PER_Visible_3_tags_1,	/* Same as above */
 	sizeof(asn_DEF_Not_PER_Visible_3_tags_1)
 		/sizeof(asn_DEF_Not_PER_Visible_3_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	&asn_PER_type_Not_PER_Visible_3_constr_1,
+	{ 0, &asn_PER_type_Not_PER_Visible_3_constr_1, Not_PER_Visible_3_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -1438,15 +1408,13 @@
 	"SIZE-but-not-FROM",
 	"SIZE-but-not-FROM",
 	&asn_OP_IA5String,
-	SIZE_but_not_FROM_constraint,
 	asn_DEF_SIZE_but_not_FROM_tags_1,
 	sizeof(asn_DEF_SIZE_but_not_FROM_tags_1)
 		/sizeof(asn_DEF_SIZE_but_not_FROM_tags_1[0]), /* 1 */
 	asn_DEF_SIZE_but_not_FROM_tags_1,	/* Same as above */
 	sizeof(asn_DEF_SIZE_but_not_FROM_tags_1)
 		/sizeof(asn_DEF_SIZE_but_not_FROM_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	&asn_PER_type_SIZE_but_not_FROM_constr_1,
+	{ 0, &asn_PER_type_SIZE_but_not_FROM_constr_1, SIZE_but_not_FROM_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -1540,15 +1508,13 @@
 	"SIZE-and-FROM",
 	"SIZE-and-FROM",
 	&asn_OP_IA5String,
-	SIZE_and_FROM_constraint,
 	asn_DEF_SIZE_and_FROM_tags_1,
 	sizeof(asn_DEF_SIZE_and_FROM_tags_1)
 		/sizeof(asn_DEF_SIZE_and_FROM_tags_1[0]), /* 1 */
 	asn_DEF_SIZE_and_FROM_tags_1,	/* Same as above */
 	sizeof(asn_DEF_SIZE_and_FROM_tags_1)
 		/sizeof(asn_DEF_SIZE_and_FROM_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	&asn_PER_type_SIZE_and_FROM_constr_1,
+	{ 0, &asn_PER_type_SIZE_and_FROM_constr_1, SIZE_and_FROM_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -1639,15 +1605,13 @@
 	"Neither-SIZE-nor-FROM",
 	"Neither-SIZE-nor-FROM",
 	&asn_OP_IA5String,
-	Neither_SIZE_nor_FROM_constraint,
 	asn_DEF_Neither_SIZE_nor_FROM_tags_1,
 	sizeof(asn_DEF_Neither_SIZE_nor_FROM_tags_1)
 		/sizeof(asn_DEF_Neither_SIZE_nor_FROM_tags_1[0]), /* 1 */
 	asn_DEF_Neither_SIZE_nor_FROM_tags_1,	/* Same as above */
 	sizeof(asn_DEF_Neither_SIZE_nor_FROM_tags_1)
 		/sizeof(asn_DEF_Neither_SIZE_nor_FROM_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	&asn_PER_type_Neither_SIZE_nor_FROM_constr_1,
+	{ 0, &asn_PER_type_Neither_SIZE_nor_FROM_constr_1, Neither_SIZE_nor_FROM_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -1732,15 +1696,13 @@
 	"Utf8-4",
 	"Utf8-4",
 	&asn_OP_UTF8String,
-	Utf8_4_constraint,
 	asn_DEF_Utf8_4_tags_1,
 	sizeof(asn_DEF_Utf8_4_tags_1)
 		/sizeof(asn_DEF_Utf8_4_tags_1[0]), /* 1 */
 	asn_DEF_Utf8_4_tags_1,	/* Same as above */
 	sizeof(asn_DEF_Utf8_4_tags_1)
 		/sizeof(asn_DEF_Utf8_4_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	&asn_PER_type_Utf8_4_constr_1,
+	{ 0, &asn_PER_type_Utf8_4_constr_1, Utf8_4_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -1853,15 +1815,13 @@
 	"Utf8-3",
 	"Utf8-3",
 	&asn_OP_UTF8String,
-	Utf8_3_constraint,
 	asn_DEF_Utf8_3_tags_1,
 	sizeof(asn_DEF_Utf8_3_tags_1)
 		/sizeof(asn_DEF_Utf8_3_tags_1[0]), /* 1 */
 	asn_DEF_Utf8_3_tags_1,	/* Same as above */
 	sizeof(asn_DEF_Utf8_3_tags_1)
 		/sizeof(asn_DEF_Utf8_3_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	&asn_PER_type_Utf8_3_constr_1,
+	{ 0, &asn_PER_type_Utf8_3_constr_1, Utf8_3_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -1945,15 +1905,13 @@
 	"Utf8-2",
 	"Utf8-2",
 	&asn_OP_UTF8String,
-	Utf8_2_constraint,
 	asn_DEF_Utf8_2_tags_1,
 	sizeof(asn_DEF_Utf8_2_tags_1)
 		/sizeof(asn_DEF_Utf8_2_tags_1[0]), /* 1 */
 	asn_DEF_Utf8_2_tags_1,	/* Same as above */
 	sizeof(asn_DEF_Utf8_2_tags_1)
 		/sizeof(asn_DEF_Utf8_2_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	&asn_PER_type_Utf8_2_constr_1,
+	{ 0, &asn_PER_type_Utf8_2_constr_1, Utf8_2_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -1996,15 +1954,13 @@
 	"Utf8-1",
 	"Utf8-1",
 	&asn_OP_UTF8String,
-	UTF8String_constraint,
 	asn_DEF_Utf8_1_tags_1,
 	sizeof(asn_DEF_Utf8_1_tags_1)
 		/sizeof(asn_DEF_Utf8_1_tags_1[0]), /* 1 */
 	asn_DEF_Utf8_1_tags_1,	/* Same as above */
 	sizeof(asn_DEF_Utf8_1_tags_1)
 		/sizeof(asn_DEF_Utf8_1_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	0,	/* No PER visible constraints */
+	{ 0, 0, UTF8String_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -2128,15 +2084,13 @@
 	"VisibleIdentifier",
 	"VisibleIdentifier",
 	&asn_OP_VisibleString,
-	VisibleIdentifier_constraint,
 	asn_DEF_VisibleIdentifier_tags_1,
 	sizeof(asn_DEF_VisibleIdentifier_tags_1)
 		/sizeof(asn_DEF_VisibleIdentifier_tags_1[0]), /* 1 */
 	asn_DEF_VisibleIdentifier_tags_1,	/* Same as above */
 	sizeof(asn_DEF_VisibleIdentifier_tags_1)
 		/sizeof(asn_DEF_VisibleIdentifier_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	&asn_PER_type_VisibleIdentifier_constr_1,
+	{ 0, &asn_PER_type_VisibleIdentifier_constr_1, VisibleIdentifier_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -2361,15 +2315,13 @@
 	"enum-c",
 	"enum-c",
 	&asn_OP_NativeEnumerated,
-	NativeEnumerated_constraint,
 	asn_DEF_enum_c_tags_6,
 	sizeof(asn_DEF_enum_c_tags_6)
 		/sizeof(asn_DEF_enum_c_tags_6[0]), /* 1 */
 	asn_DEF_enum_c_tags_6,	/* Same as above */
 	sizeof(asn_DEF_enum_c_tags_6)
 		/sizeof(asn_DEF_enum_c_tags_6[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	&asn_PER_type_enum_c_constr_6,
+	{ 0, &asn_PER_type_enum_c_constr_6, NativeEnumerated_constraint },
 	0, 0,	/* Defined elsewhere */
 	&asn_SPC_enum_c_specs_6	/* Additional specs */
 };
@@ -2380,9 +2332,7 @@
 		.tag_mode = 0,
 		.type = &asn_DEF_Int1,
 		.type_selector = 0,
-		.memb_constraints = memb_int1_c_constraint_1,
-		.oer_constraints = 0,	/* OER is not compiled, use -gen-OER */
-		.per_constraints = &asn_PER_memb_int1_c_constr_2,
+		{ .oer_constraints = 0, .per_constraints = &asn_PER_memb_int1_c_constr_2, .general_constraints =  memb_int1_c_constraint_1 },
 		.default_value = asn_DFL_2_set_3,	/* DEFAULT 3 */
 		.name = "int1-c"
 		},
@@ -2391,9 +2341,7 @@
 		.tag_mode = +1,	/* EXPLICIT tag at current level */
 		.type = &asn_DEF_Int4,
 		.type_selector = 0,
-		.memb_constraints = 0,	/* Defer constraints checking to the member type */
-		.oer_constraints = 0,	/* OER is not compiled, use -gen-OER */
-		.per_constraints = 0,	/* No PER visible constraints */
+		{ .oer_constraints = 0, .per_constraints = 0, .general_constraints = 0 },
 		.default_value = 0,
 		.name = "int4"
 		},
@@ -2402,9 +2350,7 @@
 		.tag_mode = 0,
 		.type = &asn_DEF_Int4,
 		.type_selector = 0,
-		.memb_constraints = memb_int4_c_constraint_1,
-		.oer_constraints = 0,	/* OER is not compiled, use -gen-OER */
-		.per_constraints = &asn_PER_memb_int4_c_constr_4,
+		{ .oer_constraints = 0, .per_constraints = &asn_PER_memb_int4_c_constr_4, .general_constraints =  memb_int4_c_constraint_1 },
 		.default_value = 0,
 		.name = "int4-c"
 		},
@@ -2413,9 +2359,7 @@
 		.tag_mode = 0,
 		.type = &asn_DEF_BOOLEAN,
 		.type_selector = 0,
-		.memb_constraints = 0,	/* Defer constraints checking to the member type */
-		.oer_constraints = 0,	/* OER is not compiled, use -gen-OER */
-		.per_constraints = 0,	/* No PER visible constraints */
+		{ .oer_constraints = 0, .per_constraints = 0, .general_constraints = 0 },
 		.default_value = asn_DFL_5_set_1,	/* DEFAULT 1 */
 		.name = "bool"
 		},
@@ -2424,9 +2368,7 @@
 		.tag_mode = 0,
 		.type = &asn_DEF_enum_c_6,
 		.type_selector = 0,
-		.memb_constraints = 0,	/* Defer constraints checking to the member type */
-		.oer_constraints = 0,	/* OER is not compiled, use -gen-OER */
-		.per_constraints = 0,	/* No PER visible constraints */
+		{ .oer_constraints = 0, .per_constraints = 0, .general_constraints = 0 },
 		.default_value = 0,
 		.name = "enum-c"
 		},
@@ -2435,9 +2377,7 @@
 		.tag_mode = 0,
 		.type = &asn_DEF_NULL,
 		.type_selector = 0,
-		.memb_constraints = 0,	/* Defer constraints checking to the member type */
-		.oer_constraints = 0,	/* OER is not compiled, use -gen-OER */
-		.per_constraints = 0,	/* No PER visible constraints */
+		{ .oer_constraints = 0, .per_constraints = 0, .general_constraints = 0 },
 		.default_value = 0,
 		.name = "null"
 		},
@@ -2446,9 +2386,7 @@
 		.tag_mode = 0,
 		.type = &asn_DEF_Int5,
 		.type_selector = 0,
-		.memb_constraints = memb_int5_c_constraint_1,
-		.oer_constraints = 0,	/* OER is not compiled, use -gen-OER */
-		.per_constraints = &asn_PER_memb_int5_c_constr_13,
+		{ .oer_constraints = 0, .per_constraints = &asn_PER_memb_int5_c_constr_13, .general_constraints =  memb_int5_c_constraint_1 },
 		.default_value = 0,
 		.name = "int5-c"
 		},
@@ -2480,15 +2418,13 @@
 	"Sequence",
 	"Sequence",
 	&asn_OP_SEQUENCE,
-	SEQUENCE_constraint,
 	asn_DEF_Sequence_tags_1,
 	sizeof(asn_DEF_Sequence_tags_1)
 		/sizeof(asn_DEF_Sequence_tags_1[0]), /* 1 */
 	asn_DEF_Sequence_tags_1,	/* Same as above */
 	sizeof(asn_DEF_Sequence_tags_1)
 		/sizeof(asn_DEF_Sequence_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	0,	/* No PER visible constraints */
+	{ 0, 0, SEQUENCE_constraint },
 	asn_MBR_Sequence_1,
 	7,	/* Elements count */
 	&asn_SPC_Sequence_specs_1	/* Additional specs */
@@ -2537,9 +2473,7 @@
 		.tag_mode = 0,
 		.type = &asn_DEF_Sequence,
 		.type_selector = 0,
-		.memb_constraints = 0,	/* Defer constraints checking to the member type */
-		.oer_constraints = 0,	/* OER is not compiled, use -gen-OER */
-		.per_constraints = 0,	/* No PER visible constraints */
+		{ .oer_constraints = 0, .per_constraints = 0, .general_constraints = 0 },
 		.default_value = 0,
 		.name = ""
 		},
@@ -2556,15 +2490,13 @@
 	"SequenceOf",
 	"SequenceOf",
 	&asn_OP_SEQUENCE_OF,
-	SEQUENCE_OF_constraint,
 	asn_DEF_SequenceOf_tags_1,
 	sizeof(asn_DEF_SequenceOf_tags_1)
 		/sizeof(asn_DEF_SequenceOf_tags_1[0]), /* 1 */
 	asn_DEF_SequenceOf_tags_1,	/* Same as above */
 	sizeof(asn_DEF_SequenceOf_tags_1)
 		/sizeof(asn_DEF_SequenceOf_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	&asn_PER_type_SequenceOf_constr_1,
+	{ 0, &asn_PER_type_SequenceOf_constr_1, SEQUENCE_OF_constraint },
 	asn_MBR_SequenceOf_1,
 	1,	/* Single element */
 	&asn_SPC_SequenceOf_specs_1	/* Additional specs */
@@ -2640,15 +2572,13 @@
 	"Enum0",
 	"Enum0",
 	&asn_OP_NativeEnumerated,
-	NativeEnumerated_constraint,
 	asn_DEF_Enum0_tags_1,
 	sizeof(asn_DEF_Enum0_tags_1)
 		/sizeof(asn_DEF_Enum0_tags_1[0]), /* 1 */
 	asn_DEF_Enum0_tags_1,	/* Same as above */
 	sizeof(asn_DEF_Enum0_tags_1)
 		/sizeof(asn_DEF_Enum0_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	&asn_PER_type_Enum0_constr_1,
+	{ 0, &asn_PER_type_Enum0_constr_1, NativeEnumerated_constraint },
 	0, 0,	/* Defined elsewhere */
 	&asn_SPC_Enum0_specs_1	/* Additional specs */
 };
@@ -2748,15 +2678,13 @@
 	"Enum1",
 	"Enum1",
 	&asn_OP_NativeEnumerated,
-	Enum1_constraint,
 	asn_DEF_Enum1_tags_1,
 	sizeof(asn_DEF_Enum1_tags_1)
 		/sizeof(asn_DEF_Enum1_tags_1[0]), /* 1 */
 	asn_DEF_Enum1_tags_1,	/* Same as above */
 	sizeof(asn_DEF_Enum1_tags_1)
 		/sizeof(asn_DEF_Enum1_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	&asn_PER_type_Enum1_constr_1,
+	{ 0, &asn_PER_type_Enum1_constr_1, Enum1_constraint },
 	0, 0,	/* Defined elsewhere */
 	&asn_SPC_Enum1_specs_1	/* Additional specs */
 };
@@ -2881,15 +2809,13 @@
 	"Identifier",
 	"Identifier",
 	&asn_OP_VisibleString,
-	Identifier_constraint,
 	asn_DEF_Identifier_tags_1,
 	sizeof(asn_DEF_Identifier_tags_1)
 		/sizeof(asn_DEF_Identifier_tags_1[0]), /* 1 */
 	asn_DEF_Identifier_tags_1,	/* Same as above */
 	sizeof(asn_DEF_Identifier_tags_1)
 		/sizeof(asn_DEF_Identifier_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	&asn_PER_type_Identifier_constr_1,
+	{ 0, &asn_PER_type_Identifier_constr_1, Identifier_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };