diff --git a/tests/tests-asn1c-compiler/110-param-3-OK.asn1.-Pfcompound-names b/tests/tests-asn1c-compiler/110-param-3-OK.asn1.-Pfcompound-names
index ccf82a8..8b16767 100644
--- a/tests/tests-asn1c-compiler/110-param-3-OK.asn1.-Pfcompound-names
+++ b/tests/tests-asn1c-compiler/110-param-3-OK.asn1.-Pfcompound-names
@@ -7,41 +7,41 @@
 
 /*** <<< DEPS [Flag] >>> ***/
 
-typedef enum Flag_16P0__field {
-	Flag_16P0__field_red	= 0,
-	Flag_16P0__field_green	= 1,
-	Flag_16P0__field_blue	= 5
-} e_Flag_16P0__field;
-typedef enum Flag_16P1__field {
-	Flag_16P1__field_red	= 3,
-	Flag_16P1__field_green	= 4,
-	Flag_16P1__field_blue	= 5
-} e_Flag_16P1__field;
+typedef enum Flag_15P0__field {
+	Flag_15P0__field_red	= 0,
+	Flag_15P0__field_green	= 1,
+	Flag_15P0__field_blue	= 5
+} e_Flag_15P0__field;
+typedef enum Flag_15P1__field {
+	Flag_15P1__field_red	= 3,
+	Flag_15P1__field_green	= 4,
+	Flag_15P1__field_blue	= 5
+} e_Flag_15P1__field;
 
 /*** <<< TYPE-DECLS [Flag] >>> ***/
 
-typedef struct Flag_16P0 {
+typedef struct Flag_15P0 {
 	long	*field	/* DEFAULT 5 */;
 	
 	/* Context for parsing across buffer boundaries */
 	asn_struct_ctx_t _asn_ctx;
-} Flag_16P0_t;
-typedef struct Flag_16P1 {
+} Flag_15P0_t;
+typedef struct Flag_15P1 {
 	long	*field	/* DEFAULT 5 */;
 	
 	/* Context for parsing across buffer boundaries */
 	asn_struct_ctx_t _asn_ctx;
-} Flag_16P1_t;
+} Flag_15P1_t;
 
 /*** <<< FUNC-DECLS [Flag] >>> ***/
 
-extern asn_TYPE_descriptor_t asn_DEF_Flag_16P0;
-extern asn_SEQUENCE_specifics_t asn_SPC_Flag_16P0_specs_1;
-extern asn_TYPE_member_t asn_MBR_Flag_16P0_1[1];
+extern asn_TYPE_descriptor_t asn_DEF_Flag_15P0;
+extern asn_SEQUENCE_specifics_t asn_SPC_Flag_15P0_specs_1;
+extern asn_TYPE_member_t asn_MBR_Flag_15P0_1[1];
 /* extern asn_TYPE_descriptor_t asn_DEF_field_7;	// (Use -fall-defs-global to expose) */
-extern asn_TYPE_descriptor_t asn_DEF_Flag_16P1;
-extern asn_SEQUENCE_specifics_t asn_SPC_Flag_16P1_specs_6;
-extern asn_TYPE_member_t asn_MBR_Flag_16P1_6[1];
+extern asn_TYPE_descriptor_t asn_DEF_Flag_15P1;
+extern asn_SEQUENCE_specifics_t asn_SPC_Flag_15P1_specs_6;
+extern asn_TYPE_member_t asn_MBR_Flag_15P1_6[1];
 
 /*** <<< CODE [Flag] >>> ***/
 
@@ -70,8 +70,8 @@
 		return (*st == 5);
 	}
 }
-asn_TYPE_member_t asn_MBR_Flag_16P0_1[] = {
-	{ ATF_POINTER, 1, offsetof(struct Flag_16P0, field),
+asn_TYPE_member_t asn_MBR_Flag_15P0_1[] = {
+	{ ATF_POINTER, 1, offsetof(struct Flag_15P0, field),
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
 		.tag_mode = 0,
 		.type = &asn_DEF_NativeInteger,
@@ -83,37 +83,37 @@
 		.name = "field"
 		},
 };
-static const ber_tlv_tag_t asn_DEF_Flag_16P0_tags_1[] = {
+static const ber_tlv_tag_t asn_DEF_Flag_15P0_tags_1[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static const asn_TYPE_tag2member_t asn_MAP_Flag_16P0_tag2el_1[] = {
+static const asn_TYPE_tag2member_t asn_MAP_Flag_15P0_tag2el_1[] = {
     { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 } /* field */
 };
-asn_SEQUENCE_specifics_t asn_SPC_Flag_16P0_specs_1 = {
-	sizeof(struct Flag_16P0),
-	offsetof(struct Flag_16P0, _asn_ctx),
-	.tag2el = asn_MAP_Flag_16P0_tag2el_1,
+asn_SEQUENCE_specifics_t asn_SPC_Flag_15P0_specs_1 = {
+	sizeof(struct Flag_15P0),
+	offsetof(struct Flag_15P0, _asn_ctx),
+	.tag2el = asn_MAP_Flag_15P0_tag2el_1,
 	.tag2el_count = 1,	/* Count of tags in the map */
 	0, 0, 0,	/* Optional elements (not needed) */
 	-1,	/* Start extensions */
 	-1	/* Stop extensions */
 };
-asn_TYPE_descriptor_t asn_DEF_Flag_16P0 = {
+asn_TYPE_descriptor_t asn_DEF_Flag_15P0 = {
 	"Flag",
 	"Flag",
 	&asn_OP_SEQUENCE,
 	SEQUENCE_constraint,
-	asn_DEF_Flag_16P0_tags_1,
-	sizeof(asn_DEF_Flag_16P0_tags_1)
-		/sizeof(asn_DEF_Flag_16P0_tags_1[0]), /* 1 */
-	asn_DEF_Flag_16P0_tags_1,	/* Same as above */
-	sizeof(asn_DEF_Flag_16P0_tags_1)
-		/sizeof(asn_DEF_Flag_16P0_tags_1[0]), /* 1 */
+	asn_DEF_Flag_15P0_tags_1,
+	sizeof(asn_DEF_Flag_15P0_tags_1)
+		/sizeof(asn_DEF_Flag_15P0_tags_1[0]), /* 1 */
+	asn_DEF_Flag_15P0_tags_1,	/* Same as above */
+	sizeof(asn_DEF_Flag_15P0_tags_1)
+		/sizeof(asn_DEF_Flag_15P0_tags_1[0]), /* 1 */
 	0,	/* No OER visible constraints */
 	0,	/* No PER visible constraints */
-	asn_MBR_Flag_16P0_1,
+	asn_MBR_Flag_15P0_1,
 	1,	/* Elements count */
-	&asn_SPC_Flag_16P0_specs_1	/* Additional specs */
+	&asn_SPC_Flag_15P0_specs_1	/* Additional specs */
 };
 
 static int asn_DFL_7_set_5(int set_value, void **sptr) {
@@ -174,8 +174,8 @@
 	&asn_SPC_field_specs_7	/* Additional specs */
 };
 
-asn_TYPE_member_t asn_MBR_Flag_16P1_6[] = {
-	{ ATF_POINTER, 1, offsetof(struct Flag_16P1, field),
+asn_TYPE_member_t asn_MBR_Flag_15P1_6[] = {
+	{ ATF_POINTER, 1, offsetof(struct Flag_15P1, field),
 		.tag = (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)),
 		.tag_mode = 0,
 		.type = &asn_DEF_field_7,
@@ -187,37 +187,37 @@
 		.name = "field"
 		},
 };
-static const ber_tlv_tag_t asn_DEF_Flag_16P1_tags_6[] = {
+static const ber_tlv_tag_t asn_DEF_Flag_15P1_tags_6[] = {
 	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
 };
-static const asn_TYPE_tag2member_t asn_MAP_Flag_16P1_tag2el_6[] = {
+static const asn_TYPE_tag2member_t asn_MAP_Flag_15P1_tag2el_6[] = {
     { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 } /* field */
 };
-asn_SEQUENCE_specifics_t asn_SPC_Flag_16P1_specs_6 = {
-	sizeof(struct Flag_16P1),
-	offsetof(struct Flag_16P1, _asn_ctx),
-	.tag2el = asn_MAP_Flag_16P1_tag2el_6,
+asn_SEQUENCE_specifics_t asn_SPC_Flag_15P1_specs_6 = {
+	sizeof(struct Flag_15P1),
+	offsetof(struct Flag_15P1, _asn_ctx),
+	.tag2el = asn_MAP_Flag_15P1_tag2el_6,
 	.tag2el_count = 1,	/* Count of tags in the map */
 	0, 0, 0,	/* Optional elements (not needed) */
 	-1,	/* Start extensions */
 	-1	/* Stop extensions */
 };
-asn_TYPE_descriptor_t asn_DEF_Flag_16P1 = {
+asn_TYPE_descriptor_t asn_DEF_Flag_15P1 = {
 	"Flag",
 	"Flag",
 	&asn_OP_SEQUENCE,
 	SEQUENCE_constraint,
-	asn_DEF_Flag_16P1_tags_6,
-	sizeof(asn_DEF_Flag_16P1_tags_6)
-		/sizeof(asn_DEF_Flag_16P1_tags_6[0]), /* 1 */
-	asn_DEF_Flag_16P1_tags_6,	/* Same as above */
-	sizeof(asn_DEF_Flag_16P1_tags_6)
-		/sizeof(asn_DEF_Flag_16P1_tags_6[0]), /* 1 */
+	asn_DEF_Flag_15P1_tags_6,
+	sizeof(asn_DEF_Flag_15P1_tags_6)
+		/sizeof(asn_DEF_Flag_15P1_tags_6[0]), /* 1 */
+	asn_DEF_Flag_15P1_tags_6,	/* Same as above */
+	sizeof(asn_DEF_Flag_15P1_tags_6)
+		/sizeof(asn_DEF_Flag_15P1_tags_6[0]), /* 1 */
 	0,	/* No OER visible constraints */
 	0,	/* No PER visible constraints */
-	asn_MBR_Flag_16P1_6,
+	asn_MBR_Flag_15P1_6,
 	1,	/* Elements count */
-	&asn_SPC_Flag_16P1_specs_6	/* Additional specs */
+	&asn_SPC_Flag_15P1_specs_6	/* Additional specs */
 };
 
 
@@ -227,7 +227,7 @@
 
 /*** <<< TYPE-DECLS [IntegerColorFlag] >>> ***/
 
-typedef Flag_16P0_t	 IntegerColorFlag_t;
+typedef Flag_15P0_t	 IntegerColorFlag_t;
 
 /*** <<< FUNC-DECLS [IntegerColorFlag] >>> ***/
 
@@ -243,7 +243,7 @@
 /*** <<< CODE [IntegerColorFlag] >>> ***/
 
 /*
- * This type is implemented using Flag_16P0,
+ * This type is implemented using Flag_15P0,
  * so here we adjust the DEF accordingly.
  */
 
@@ -265,9 +265,9 @@
 		/sizeof(asn_DEF_IntegerColorFlag_tags_1[0]), /* 1 */
 	0,	/* No OER visible constraints */
 	0,	/* No PER visible constraints */
-	asn_MBR_Flag_16P0_1,
+	asn_MBR_Flag_15P0_1,
 	1,	/* Elements count */
-	&asn_SPC_Flag_16P0_specs_1	/* Additional specs */
+	&asn_SPC_Flag_15P0_specs_1	/* Additional specs */
 };
 
 
@@ -277,7 +277,7 @@
 
 /*** <<< TYPE-DECLS [EnumeratedColorFlag] >>> ***/
 
-typedef Flag_16P1_t	 EnumeratedColorFlag_t;
+typedef Flag_15P1_t	 EnumeratedColorFlag_t;
 
 /*** <<< FUNC-DECLS [EnumeratedColorFlag] >>> ***/
 
@@ -293,7 +293,7 @@
 /*** <<< CODE [EnumeratedColorFlag] >>> ***/
 
 /*
- * This type is implemented using Flag_16P1,
+ * This type is implemented using Flag_15P1,
  * so here we adjust the DEF accordingly.
  */
 
@@ -315,8 +315,8 @@
 		/sizeof(asn_DEF_EnumeratedColorFlag_tags_1[0]), /* 1 */
 	0,	/* No OER visible constraints */
 	0,	/* No PER visible constraints */
-	asn_MBR_Flag_16P1_6,
+	asn_MBR_Flag_15P1_6,
 	1,	/* Elements count */
-	&asn_SPC_Flag_16P1_specs_6	/* Additional specs */
+	&asn_SPC_Flag_15P1_specs_6	/* Additional specs */
 };
 
diff --git a/tests/tests-asn1c-compiler/149-with-components-SE.asn1.-E b/tests/tests-asn1c-compiler/149-with-components-SE.asn1.-E
index 0a7073d..e20e6cd 100644
--- a/tests/tests-asn1c-compiler/149-with-components-SE.asn1.-E
+++ b/tests/tests-asn1c-compiler/149-with-components-SE.asn1.-E
@@ -7,6 +7,6 @@
         IdentifiedRegion ( WITH COMPONENTS { countryOnly(Canada) }),
         IdentifiedRegion ( WITH COMPONENTS { countryOnly(Mexico) }),
         IdentifiedRegion ( WITH COMPONENTS { countryOnly(USA) })
-      })) }), canRequestRollover ( NULL), encryptionKey ABSENT, verifyKeyIndicator (WITH COMPONENTS { verificationKey (WITH COMPONENTS { ecdsaNistP256 (WITH COMPONENTS { compressed-y-0, compressed-y-1 }) }) }) }) })
+      })) }), canRequestRollover (NULL), encryptionKey ABSENT, verifyKeyIndicator (WITH COMPONENTS { verificationKey (WITH COMPONENTS { ecdsaNistP256 (WITH COMPONENTS { compressed-y-0, compressed-y-1 }) }) }) }) })
 
 END
diff --git a/tests/tests-asn1c-compiler/151-per-b2110-OK.asn1 b/tests/tests-asn1c-compiler/151-per-b2110-OK.asn1
new file mode 100644
index 0000000..8706d86
--- /dev/null
+++ b/tests/tests-asn1c-compiler/151-per-b2110-OK.asn1
@@ -0,0 +1,18 @@
+
+-- OK: Everything is fine
+
+-- iso.org.dod.internet.private.enterprise (1.3.6.1.4.1)
+-- .spelio.software.asn1c.test (9363.1.5.1)
+-- .151
+
+ModulePerEffectiveConstraint
+	{ iso org(3) dod(6) internet(1) private(4) enterprise(1)
+		spelio(9363) software(1) asn1c(5) test(1) 151 }
+DEFINITIONS ::= BEGIN
+
+    -- B.2.1.10
+    -- Effective constraint: SIZE(3..20) and FROM("A".."K")
+    B ::= VisibleString (SIZE (20) INTERSECTION FROM ("A".."F")
+                    UNION SIZE (3) INTERSECTION FROM ("F".."K"))
+
+END
diff --git a/tests/tests-asn1c-compiler/151-per-b2110-OK.asn1.-EFprint-constraints b/tests/tests-asn1c-compiler/151-per-b2110-OK.asn1.-EFprint-constraints
new file mode 100644
index 0000000..09b56f8
--- /dev/null
+++ b/tests/tests-asn1c-compiler/151-per-b2110-OK.asn1.-EFprint-constraints
@@ -0,0 +1,12 @@
+ModulePerEffectiveConstraint { iso org(3) dod(6) internet(1) private(4)
+	enterprise(1) spelio(9363) software(1) asn1c(5) test(1) 151 }
+DEFINITIONS ::=
+BEGIN
+
+B ::= VisibleString (SIZE(20) ^ FROM("A".."F") | SIZE(3) ^ FROM("F".."K"))
+-- Combined constraints: (SIZE(20) ^ FROM("A".."F") | SIZE(3) ^ FROM("F".."K"))
+-- Practical constraints (B): (MIN..MAX) (SIZE(3 | 20)) (FROM("A".."K"))
+-- OER-visible constraints (B): (MIN..MAX) (SIZE(3 | 20)) 
+-- PER-visible constraints (B): (MIN..MAX) (SIZE(3 | 20)) (FROM("A".."K"))
+
+END
diff --git a/tests/tests-asn1c-compiler/152-value-and-type-references-OK.asn1 b/tests/tests-asn1c-compiler/152-value-and-type-references-OK.asn1
new file mode 100644
index 0000000..fcbd527
--- /dev/null
+++ b/tests/tests-asn1c-compiler/152-value-and-type-references-OK.asn1
@@ -0,0 +1,43 @@
+
+-- OK: Everything is fine
+
+-- iso.org.dod.internet.private.enterprise (1.3.6.1.4.1)
+-- .spelio.software.asn1c.test (9363.1.5.1)
+-- .152
+
+ModuleValueAndTypeReferences
+        { iso org(3) dod(6) internet(1) private(4) enterprise(1)
+                spelio(9363) software(1) asn1c(5) test(1) 152 }
+DEFINITIONS ::= BEGIN
+
+    value INTEGER ::= 3
+
+    valueAssignment3 INTEGER ::= value
+    valueAssignment4 INTEGER ::= MOD-CAPITALS.value4
+
+    Foo ::= Extension {{CAPS.SomeType}}
+    Bar ::= Extension {{Uppercase.SomeType}}
+
+    Extension {Foo} ::= SEQUENCE {
+    }
+
+    MTYPE ::= CLASS {
+        &id    INTEGER UNIQUE,
+        &Type
+    } WITH SYNTAX {&Type IDENTIFIED BY &id}
+
+    MessageFrame ::= SEQUENCE {
+        messageIdE   MTYPE.&id,
+        messageIdF   MTYPE.&id({MessageTypes}),
+        valueE       MTYPE.&Type,
+        valueF       MTYPE.&Type({MessageTypes}{@.messageId})
+    }
+
+END
+
+MOD-CAPITALS
+        { iso org(3) dod(6) internet(1) private(4) enterprise(1)
+                spelio(9363) software(1) asn1c(5) test(1) 152 1 }
+DEFINITIONS ::= BEGIN
+    value4 INTEGER ::= 4
+END
diff --git a/tests/tests-asn1c-compiler/152-value-and-type-references-OK.asn1.-EF b/tests/tests-asn1c-compiler/152-value-and-type-references-OK.asn1.-EF
new file mode 100644
index 0000000..ac83aa5
--- /dev/null
+++ b/tests/tests-asn1c-compiler/152-value-and-type-references-OK.asn1.-EF
@@ -0,0 +1,40 @@
+ModuleValueAndTypeReferences { iso org(3) dod(6) internet(1) private(4)
+	enterprise(1) spelio(9363) software(1) asn1c(5) test(1) 152 }
+DEFINITIONS ::=
+BEGIN
+
+value INTEGER ::= 3
+
+valueAssignment3 INTEGER ::= 3
+
+valueAssignment4 INTEGER ::= 4
+
+Foo ::= Extension{ { CAPS.SomeType}}
+
+Bar ::= Extension{ { Uppercase.SomeType}}
+
+Extension{Foo} ::= SEQUENCE { }
+
+MTYPE ::= CLASS {
+    &id	 INTEGER UNIQUE,
+    &Type	 ANY
+} WITH SYNTAX {&Type IDENTIFIED BY &id}
+
+
+MessageFrame ::= SEQUENCE {
+    messageIdE	 MTYPE.&id,
+    messageIdF	 MTYPE.&id ({MessageTypes}),
+    valueE	 MTYPE.&Type,
+    valueF	 MTYPE.&Type ({MessageTypes}{@.messageId})
+}
+
+END
+
+MOD-CAPITALS { iso org(3) dod(6) internet(1) private(4) enterprise(1)
+	spelio(9363) software(1) asn1c(5) test(1) 152 1 }
+DEFINITIONS ::=
+BEGIN
+
+value4 INTEGER ::= 4
+
+END
