regenerated
diff --git a/tests/tests-asn1c-compiler/90-cond-int-type-OK.asn1.-Pfwide-types b/tests/tests-asn1c-compiler/90-cond-int-type-OK.asn1.-Pfwide-types
index eae562d..a5d364d 100644
--- a/tests/tests-asn1c-compiler/90-cond-int-type-OK.asn1.-Pfwide-types
+++ b/tests/tests-asn1c-compiler/90-cond-int-type-OK.asn1.-Pfwide-types
@@ -34,15 +34,13 @@
 	"CN-IntegerUnlimited",
 	"CN-IntegerUnlimited",
 	&asn_OP_INTEGER,
-	INTEGER_constraint,
 	asn_DEF_CN_IntegerUnlimited_tags_1,
 	sizeof(asn_DEF_CN_IntegerUnlimited_tags_1)
 		/sizeof(asn_DEF_CN_IntegerUnlimited_tags_1[0]), /* 1 */
 	asn_DEF_CN_IntegerUnlimited_tags_1,	/* Same as above */
 	sizeof(asn_DEF_CN_IntegerUnlimited_tags_1)
 		/sizeof(asn_DEF_CN_IntegerUnlimited_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	0,	/* No PER visible constraints */
+	{ 0, 0, INTEGER_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -87,8 +85,7 @@
 		/* Nothing is here. See below */
 	}
 	
-	/* Replace with underlying type checker */
-	return td->check_constraints(td, sptr, ctfailcb, app_key);
+	return td->encoding_constraints.general_constraints(td, sptr, ctfailcb, app_key);
 }
 
 /*
@@ -105,15 +102,13 @@
 	"CN-IntegerMinMax",
 	"CN-IntegerMinMax",
 	&asn_OP_INTEGER,
-	CN_IntegerMinMax_constraint,
 	asn_DEF_CN_IntegerMinMax_tags_1,
 	sizeof(asn_DEF_CN_IntegerMinMax_tags_1)
 		/sizeof(asn_DEF_CN_IntegerMinMax_tags_1[0]), /* 1 */
 	asn_DEF_CN_IntegerMinMax_tags_1,	/* Same as above */
 	sizeof(asn_DEF_CN_IntegerMinMax_tags_1)
 		/sizeof(asn_DEF_CN_IntegerMinMax_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	0,	/* No PER visible constraints */
+	{ 0, 0, CN_IntegerMinMax_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -185,15 +180,13 @@
 	"CN-IntegerMinLow",
 	"CN-IntegerMinLow",
 	&asn_OP_INTEGER,
-	CN_IntegerMinLow_constraint,
 	asn_DEF_CN_IntegerMinLow_tags_1,
 	sizeof(asn_DEF_CN_IntegerMinLow_tags_1)
 		/sizeof(asn_DEF_CN_IntegerMinLow_tags_1[0]), /* 1 */
 	asn_DEF_CN_IntegerMinLow_tags_1,	/* Same as above */
 	sizeof(asn_DEF_CN_IntegerMinLow_tags_1)
 		/sizeof(asn_DEF_CN_IntegerMinLow_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	0,	/* No PER visible constraints */
+	{ 0, 0, CN_IntegerMinLow_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -265,15 +258,13 @@
 	"NO-IntegerMinHigh",
 	"NO-IntegerMinHigh",
 	&asn_OP_INTEGER,
-	NO_IntegerMinHigh_constraint,
 	asn_DEF_NO_IntegerMinHigh_tags_1,
 	sizeof(asn_DEF_NO_IntegerMinHigh_tags_1)
 		/sizeof(asn_DEF_NO_IntegerMinHigh_tags_1[0]), /* 1 */
 	asn_DEF_NO_IntegerMinHigh_tags_1,	/* Same as above */
 	sizeof(asn_DEF_NO_IntegerMinHigh_tags_1)
 		/sizeof(asn_DEF_NO_IntegerMinHigh_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	0,	/* No PER visible constraints */
+	{ 0, 0, NO_IntegerMinHigh_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -344,15 +335,13 @@
 	"NO-IntegerLowHigh",
 	"NO-IntegerLowHigh",
 	&asn_OP_NativeInteger,
-	NO_IntegerLowHigh_constraint,
 	asn_DEF_NO_IntegerLowHigh_tags_1,
 	sizeof(asn_DEF_NO_IntegerLowHigh_tags_1)
 		/sizeof(asn_DEF_NO_IntegerLowHigh_tags_1[0]), /* 1 */
 	asn_DEF_NO_IntegerLowHigh_tags_1,	/* Same as above */
 	sizeof(asn_DEF_NO_IntegerLowHigh_tags_1)
 		/sizeof(asn_DEF_NO_IntegerLowHigh_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	0,	/* No PER visible constraints */
+	{ 0, 0, NO_IntegerLowHigh_constraint },
 	0, 0,	/* No members */
 	&asn_SPC_NO_IntegerLowHigh_specs_1	/* Additional specs */
 };
@@ -424,15 +413,13 @@
 	"CN-IntegerLowMax",
 	"CN-IntegerLowMax",
 	&asn_OP_INTEGER,
-	CN_IntegerLowMax_constraint,
 	asn_DEF_CN_IntegerLowMax_tags_1,
 	sizeof(asn_DEF_CN_IntegerLowMax_tags_1)
 		/sizeof(asn_DEF_CN_IntegerLowMax_tags_1[0]), /* 1 */
 	asn_DEF_CN_IntegerLowMax_tags_1,	/* Same as above */
 	sizeof(asn_DEF_CN_IntegerLowMax_tags_1)
 		/sizeof(asn_DEF_CN_IntegerLowMax_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	0,	/* No PER visible constraints */
+	{ 0, 0, CN_IntegerLowMax_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -504,15 +491,13 @@
 	"NO-IntegerHighMax",
 	"NO-IntegerHighMax",
 	&asn_OP_INTEGER,
-	NO_IntegerHighMax_constraint,
 	asn_DEF_NO_IntegerHighMax_tags_1,
 	sizeof(asn_DEF_NO_IntegerHighMax_tags_1)
 		/sizeof(asn_DEF_NO_IntegerHighMax_tags_1[0]), /* 1 */
 	asn_DEF_NO_IntegerHighMax_tags_1,	/* Same as above */
 	sizeof(asn_DEF_NO_IntegerHighMax_tags_1)
 		/sizeof(asn_DEF_NO_IntegerHighMax_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	0,	/* No PER visible constraints */
+	{ 0, 0, NO_IntegerHighMax_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -584,15 +569,13 @@
 	"NO-IntegerLowestMax",
 	"NO-IntegerLowestMax",
 	&asn_OP_INTEGER,
-	NO_IntegerLowestMax_constraint,
 	asn_DEF_NO_IntegerLowestMax_tags_1,
 	sizeof(asn_DEF_NO_IntegerLowestMax_tags_1)
 		/sizeof(asn_DEF_NO_IntegerLowestMax_tags_1[0]), /* 1 */
 	asn_DEF_NO_IntegerLowestMax_tags_1,	/* Same as above */
 	sizeof(asn_DEF_NO_IntegerLowestMax_tags_1)
 		/sizeof(asn_DEF_NO_IntegerLowestMax_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	0,	/* No PER visible constraints */
+	{ 0, 0, NO_IntegerLowestMax_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -663,15 +646,13 @@
 	"NO-IntegerOutRange",
 	"NO-IntegerOutRange",
 	&asn_OP_NativeInteger,
-	NO_IntegerOutRange_constraint,
 	asn_DEF_NO_IntegerOutRange_tags_1,
 	sizeof(asn_DEF_NO_IntegerOutRange_tags_1)
 		/sizeof(asn_DEF_NO_IntegerOutRange_tags_1[0]), /* 1 */
 	asn_DEF_NO_IntegerOutRange_tags_1,	/* Same as above */
 	sizeof(asn_DEF_NO_IntegerOutRange_tags_1)
 		/sizeof(asn_DEF_NO_IntegerOutRange_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	0,	/* No PER visible constraints */
+	{ 0, 0, NO_IntegerOutRange_constraint },
 	0, 0,	/* No members */
 	&asn_SPC_NO_IntegerOutRange_specs_1	/* Additional specs */
 };
@@ -742,15 +723,13 @@
 	"NO-IntegerOutValue",
 	"NO-IntegerOutValue",
 	&asn_OP_NativeInteger,
-	NO_IntegerOutValue_constraint,
 	asn_DEF_NO_IntegerOutValue_tags_1,
 	sizeof(asn_DEF_NO_IntegerOutValue_tags_1)
 		/sizeof(asn_DEF_NO_IntegerOutValue_tags_1[0]), /* 1 */
 	asn_DEF_NO_IntegerOutValue_tags_1,	/* Same as above */
 	sizeof(asn_DEF_NO_IntegerOutValue_tags_1)
 		/sizeof(asn_DEF_NO_IntegerOutValue_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	0,	/* No PER visible constraints */
+	{ 0, 0, NO_IntegerOutValue_constraint },
 	0, 0,	/* No members */
 	&asn_SPC_NO_IntegerOutValue_specs_1	/* Additional specs */
 };
@@ -816,15 +795,13 @@
 	"OK-IntegerInRange1",
 	"OK-IntegerInRange1",
 	&asn_OP_NativeInteger,
-	OK_IntegerInRange1_constraint,
 	asn_DEF_OK_IntegerInRange1_tags_1,
 	sizeof(asn_DEF_OK_IntegerInRange1_tags_1)
 		/sizeof(asn_DEF_OK_IntegerInRange1_tags_1[0]), /* 1 */
 	asn_DEF_OK_IntegerInRange1_tags_1,	/* Same as above */
 	sizeof(asn_DEF_OK_IntegerInRange1_tags_1)
 		/sizeof(asn_DEF_OK_IntegerInRange1_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	0,	/* No PER visible constraints */
+	{ 0, 0, OK_IntegerInRange1_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -890,15 +867,13 @@
 	"OK-IntegerInRange2",
 	"OK-IntegerInRange2",
 	&asn_OP_NativeInteger,
-	OK_IntegerInRange2_constraint,
 	asn_DEF_OK_IntegerInRange2_tags_1,
 	sizeof(asn_DEF_OK_IntegerInRange2_tags_1)
 		/sizeof(asn_DEF_OK_IntegerInRange2_tags_1[0]), /* 1 */
 	asn_DEF_OK_IntegerInRange2_tags_1,	/* Same as above */
 	sizeof(asn_DEF_OK_IntegerInRange2_tags_1)
 		/sizeof(asn_DEF_OK_IntegerInRange2_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	0,	/* No PER visible constraints */
+	{ 0, 0, OK_IntegerInRange2_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -964,15 +939,13 @@
 	"OK-IntegerInRange3",
 	"OK-IntegerInRange3",
 	&asn_OP_NativeInteger,
-	OK_IntegerInRange3_constraint,
 	asn_DEF_OK_IntegerInRange3_tags_1,
 	sizeof(asn_DEF_OK_IntegerInRange3_tags_1)
 		/sizeof(asn_DEF_OK_IntegerInRange3_tags_1[0]), /* 1 */
 	asn_DEF_OK_IntegerInRange3_tags_1,	/* Same as above */
 	sizeof(asn_DEF_OK_IntegerInRange3_tags_1)
 		/sizeof(asn_DEF_OK_IntegerInRange3_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	0,	/* No PER visible constraints */
+	{ 0, 0, OK_IntegerInRange3_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -1038,15 +1011,13 @@
 	"OK-IntegerInRange4",
 	"OK-IntegerInRange4",
 	&asn_OP_NativeInteger,
-	OK_IntegerInRange4_constraint,
 	asn_DEF_OK_IntegerInRange4_tags_1,
 	sizeof(asn_DEF_OK_IntegerInRange4_tags_1)
 		/sizeof(asn_DEF_OK_IntegerInRange4_tags_1[0]), /* 1 */
 	asn_DEF_OK_IntegerInRange4_tags_1,	/* Same as above */
 	sizeof(asn_DEF_OK_IntegerInRange4_tags_1)
 		/sizeof(asn_DEF_OK_IntegerInRange4_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	0,	/* No PER visible constraints */
+	{ 0, 0, OK_IntegerInRange4_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -1118,15 +1089,13 @@
 	"OK-IntegerInRange5",
 	"OK-IntegerInRange5",
 	&asn_OP_INTEGER,
-	OK_IntegerInRange5_constraint,
 	asn_DEF_OK_IntegerInRange5_tags_1,
 	sizeof(asn_DEF_OK_IntegerInRange5_tags_1)
 		/sizeof(asn_DEF_OK_IntegerInRange5_tags_1[0]), /* 1 */
 	asn_DEF_OK_IntegerInRange5_tags_1,	/* Same as above */
 	sizeof(asn_DEF_OK_IntegerInRange5_tags_1)
 		/sizeof(asn_DEF_OK_IntegerInRange5_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	0,	/* No PER visible constraints */
+	{ 0, 0, OK_IntegerInRange5_constraint },
 	0, 0,	/* No members */
 	0	/* No specifics */
 };
@@ -1188,15 +1157,13 @@
 	"NO-IntegerInRange6",
 	"NO-IntegerInRange6",
 	&asn_OP_NativeInteger,
-	NO_IntegerInRange6_constraint,
 	asn_DEF_NO_IntegerInRange6_tags_1,
 	sizeof(asn_DEF_NO_IntegerInRange6_tags_1)
 		/sizeof(asn_DEF_NO_IntegerInRange6_tags_1[0]), /* 1 */
 	asn_DEF_NO_IntegerInRange6_tags_1,	/* Same as above */
 	sizeof(asn_DEF_NO_IntegerInRange6_tags_1)
 		/sizeof(asn_DEF_NO_IntegerInRange6_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	0,	/* No PER visible constraints */
+	{ 0, 0, NO_IntegerInRange6_constraint },
 	0, 0,	/* No members */
 	&asn_SPC_NO_IntegerInRange6_specs_1	/* Additional specs */
 };
@@ -1244,15 +1211,13 @@
 	"CN-IntegerEnumerated1",
 	"CN-IntegerEnumerated1",
 	&asn_OP_INTEGER,
-	INTEGER_constraint,
 	asn_DEF_CN_IntegerEnumerated1_tags_1,
 	sizeof(asn_DEF_CN_IntegerEnumerated1_tags_1)
 		/sizeof(asn_DEF_CN_IntegerEnumerated1_tags_1[0]), /* 1 */
 	asn_DEF_CN_IntegerEnumerated1_tags_1,	/* Same as above */
 	sizeof(asn_DEF_CN_IntegerEnumerated1_tags_1)
 		/sizeof(asn_DEF_CN_IntegerEnumerated1_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	0,	/* No PER visible constraints */
+	{ 0, 0, INTEGER_constraint },
 	0, 0,	/* Defined elsewhere */
 	0	/* No specifics */
 };
@@ -1300,15 +1265,13 @@
 	"NO-IntegerEnumerated2",
 	"NO-IntegerEnumerated2",
 	&asn_OP_INTEGER,
-	INTEGER_constraint,
 	asn_DEF_NO_IntegerEnumerated2_tags_1,
 	sizeof(asn_DEF_NO_IntegerEnumerated2_tags_1)
 		/sizeof(asn_DEF_NO_IntegerEnumerated2_tags_1[0]), /* 1 */
 	asn_DEF_NO_IntegerEnumerated2_tags_1,	/* Same as above */
 	sizeof(asn_DEF_NO_IntegerEnumerated2_tags_1)
 		/sizeof(asn_DEF_NO_IntegerEnumerated2_tags_1[0]), /* 1 */
-	0,	/* No OER visible constraints */
-	0,	/* No PER visible constraints */
+	{ 0, 0, INTEGER_constraint },
 	0, 0,	/* Defined elsewhere */
 	0	/* No specifics */
 };