use hash for name lookup
diff --git a/libasn1fix/asn1fix_cws.c b/libasn1fix/asn1fix_cws.c
index 948c627..e54eaa7 100644
--- a/libasn1fix/asn1fix_cws.c
+++ b/libasn1fix/asn1fix_cws.c
@@ -389,7 +389,6 @@
 	char *mivr; /* Most Immediate Value Representation */
 	int new_ref = 1;
 	asn1p_t *asn;
-	asn1p_module_t *mod;
 	asn1p_expr_t *type_expr = (asn1p_expr_t *)NULL;
 	int i, ret = 0, psize;
 	char *pp;
@@ -458,9 +457,13 @@
 		free(mivr);
 		return -1;
 	} else {
-		mod = TQ_FIRST(&(asn->modules));
-		assert(mod);
-		expr = TQ_REMOVE(&(mod->members), next);
+        asn1p_module_t *mod = TQ_FIRST(&(asn->modules));
+        assert(mod);
+
+        /* This member removal is safe with respect to members hash since the
+         * entire asn module will be deleted down below.
+         */
+        expr = TQ_REMOVE(&(mod->members), next);
 		assert(expr);
 
         expr->parent_expr = NULL;
diff --git a/libasn1fix/asn1fix_internal.h b/libasn1fix/asn1fix_internal.h
index 5fd7e76..c429730 100644
--- a/libasn1fix/asn1fix_internal.h
+++ b/libasn1fix/asn1fix_internal.h
@@ -22,6 +22,7 @@
 
 #include <asn1parser.h>		/* Our lovely ASN.1 parser module */
 #include <asn1_namespace.h>
+#include <genhash.h>
 #include "asn1fix.h"
 
 #ifdef	_WIN32
diff --git a/libasn1fix/asn1fix_retrieve.c b/libasn1fix/asn1fix_retrieve.c
index 536f502..40acbe5 100644
--- a/libasn1fix/asn1fix_retrieve.c
+++ b/libasn1fix/asn1fix_retrieve.c
@@ -28,35 +28,44 @@
 	return NULL;
 }
 
+static asn1p_expr_t *
+asn1f_lookup_in_module(asn1p_module_t *mod, const char *name) {
+    asn1p_expr_t *expr = genhash_get(mod->members_hash, name);
+    if(!expr) {
+        asn1p_expr_t *memb;
+        TQ_FOR(memb, &mod->members, next) {
+            if(memb->expr_type == ASN_BASIC_ENUMERATED) {
+                asn1p_expr_t *v = asn1f_lookup_child(memb, name);
+                if(v) return v;
+            }
+        }
+    }
+
+    return expr;
+}
+
 asn1p_module_t *
 asn1f_lookup_in_imports(arg_t *arg, asn1p_module_t *mod, const char *name) {
 	asn1p_xports_t *xp;
-	asn1p_module_t *fromModule;
-	asn1p_expr_t *tc = (asn1p_expr_t *)0;
-	asn1p_expr_t *memb = (asn1p_expr_t *)0;
-	asn1p_expr_t *v = (asn1p_expr_t *)0;
 
 	/*
 	 * Search in which exactly module this name is defined.
 	 */
 	TQ_FOR(xp, &(mod->imports), xp_next) {
-		fromModule = asn1f_lookup_module(arg, xp->fromModuleName, NULL);
-		TQ_FOR(tc, &(xp->members), next) {
-			if(strcmp(name, tc->Identifier) == 0)
+        asn1p_module_t *fromModule =
+            asn1f_lookup_module(arg, xp->fromModuleName, NULL);
+        asn1p_expr_t *tc = (asn1p_expr_t *)0;
+
+        TQ_FOR(tc, &(xp->xp_members), next) {
+            if(strcmp(name, tc->Identifier) == 0)
 				break;
 
 			if(!fromModule)
 				continue;
 
-			TQ_FOR(memb, &(fromModule->members), next) {
-				if((memb->expr_type != ASN_BASIC_ENUMERATED) ||
-					(strcmp(memb->Identifier, tc->Identifier) != 0))
-					continue;
-
-				v = asn1f_lookup_child(memb, name);
-				if (v) break;
-			}
-			if(v) break;
+            asn1p_expr_t *v = v =
+                asn1f_lookup_in_module(fromModule, tc->Identifier);
+            if(v) break;
 		}
 		if(tc) break;
 	}
@@ -291,8 +300,6 @@
         ns_item--) {
         struct asn1_namespace_element_s *ns_el =
             &my_namespace->elements[ns_item];
-        asn1p_expr_t *ref_tc; /* Referenced tc */
-        asn1p_expr_t *v = (asn1p_expr_t *)0;
 
         switch(ns_el->selector) {
         case NAM_SYMBOL:
@@ -312,22 +319,12 @@
                 DISPOSE_OF_MY_NAMESPACE();
                 return ns_el->u.symbol.resolution;
             }
-        case NAM_SPACE:
+        case NAM_SPACE: {
+            asn1p_expr_t *ref_tc; /* Referenced tc */
             /*
              * Do a direct symbol search in the given module.
              */
-            TQ_FOR(ref_tc, &(ns_el->u.space.module->members), next) {
-                if(ref_tc->Identifier)
-                    if(strcmp(ref_tc->Identifier, identifier) == 0) break;
-
-                if(ref_tc->expr_type == ASN_BASIC_ENUMERATED) {
-                    v = asn1f_lookup_child(ref_tc, identifier);
-                    if(v) {
-                        ref_tc = v;
-                        break;
-                    }
-                }
-            }
+            ref_tc = asn1f_lookup_in_module(ns_el->u.space.module, identifier);
             if(ref_tc) {
                 /* It is acceptable that we don't use input parameters */
                 if(rhs_pspecs && !ref_tc->lhs_params) {
@@ -355,6 +352,7 @@
                 DISPOSE_OF_MY_NAMESPACE();
                 return ref_tc;
             }
+        }
 
     /*
             if(!expr && !(arg->expr->_mark & TM_BROKEN)
@@ -479,6 +477,11 @@
         ref = expr->reference;
         break;
     case FTT_VALUE:
+
+	DEBUG("%s(%s->%s) meta %d for line %d",
+		"VALUE", expr->Identifier, asn1f_printable_reference(ref),
+		expr->meta_type, expr->_lineno);
+
         assert(expr->meta_type == AMT_VALUE);
         assert(expr->value);
         /* Expression may be a terminal type itself */
@@ -574,7 +577,7 @@
 		return 0;
 	}
 
-	TQ_FOR(item, &(exports->members), next) {
+	TQ_FOR(item, &(exports->xp_members), next) {
 		if(strcmp(item->Identifier, name) == 0)
 			return 0;
 	}
diff --git a/libasn1fix/check_fixer.c b/libasn1fix/check_fixer.c
index 6f5f25e..b71a8c9 100644
--- a/libasn1fix/check_fixer.c
+++ b/libasn1fix/check_fixer.c
@@ -12,6 +12,7 @@
 #include <errno.h>
 #include <libgen.h>
 
+#include "genhash.h"
 #include "asn1fix.h"
 #include "asn1_buffer.h"
 #include "asn1_namespace.h"
@@ -340,11 +341,7 @@
 	/*
 	 * Scan in search for the original.
 	 */
-	TQ_FOR(expr, &(mod->members), next) {
-		if(strcmp(expr->Identifier, name) == 0)
-			break;
-	}
-
+    expr = genhash_get(mod->members_hash, name);
 	if(expr == NULL) {
 		fprintf(stderr,
 			"CHECKER: Value \"%s\" requested by "
diff --git a/libasn1parser/asn1p_module.c b/libasn1parser/asn1p_module.c
index 10aa94c..974668d 100644
--- a/libasn1parser/asn1p_module.c
+++ b/libasn1parser/asn1p_module.c
@@ -1,5 +1,6 @@
 #include <stdlib.h>
 #include <string.h>
+#include <genhash.h>
 
 #include "asn1parser.h"
 
@@ -15,7 +16,10 @@
 		TQ_INIT(&(mod->exports));
 		TQ_INIT(&(mod->imports));
 		TQ_INIT(&(mod->members));
-	}
+
+        mod->members_hash = genhash_new(cmpf_string, hashf_string, NULL, NULL);
+        assert(mod->members_hash);
+    }
 	return mod;
 }
 
@@ -42,6 +46,9 @@
 		while((expr = TQ_REMOVE(&(mod->members), next)))
 			asn1p_expr_free(expr);
 
+        genhash_destroy(mod->members_hash);
+        mod->members_hash = NULL;
+
 		free(mod);
 	}
 }
@@ -66,3 +73,26 @@
 		free(asn);
 	}
 }
+
+
+void
+asn1p_module_move_members(asn1p_module_t *to, asn1p_module_t *from) {
+    if(from) {
+        while(TQ_FIRST(&(from->members))) {
+            asn1p_expr_t *expr = TQ_REMOVE(&from->members, next);
+            TQ_ADD(&to->members, expr, next);
+            genhash_add(to->members_hash, expr->Identifier, expr);
+        }
+        assert(TQ_FIRST(&from->members) == 0);
+
+        genhash_empty(from->members_hash, 0, 0);
+    }
+}
+
+void
+asn1p_module_member_add(asn1p_module_t *mod, asn1p_expr_t *expr) {
+    if(expr) {
+        TQ_ADD(&mod->members, expr, next);
+        genhash_add(mod->members_hash, expr->Identifier, expr);
+    }
+}
diff --git a/libasn1parser/asn1p_module.h b/libasn1parser/asn1p_module.h
index db1f1cf..8315bf4 100644
--- a/libasn1parser/asn1p_module.h
+++ b/libasn1parser/asn1p_module.h
@@ -16,6 +16,8 @@
 asn1p_t *asn1p_new(void);
 void asn1p_delete(asn1p_t *asn);
 
+struct genhash_s;   /* Forward declaration */
+
 /*
  * Flags specific to a module.
  */
@@ -75,7 +77,8 @@
 	/*
 	 * List of everything that this module defines itself.
 	 */
-	TQ_HEAD(struct asn1p_expr_s)	members;
+	TQ_HEAD(struct asn1p_expr_s)	members;   /* Do not access directly */
+    struct genhash_s *members_hash;
 
 	/*
 	 * Next module in the list.
@@ -100,4 +103,8 @@
 asn1p_module_t *asn1p_module_new(void);
 void asn1p_module_free(asn1p_module_t *mod);
 
+void asn1p_module_move_members(asn1p_module_t *to, asn1p_module_t *from);
+void asn1p_module_member_add(asn1p_module_t *mod, struct asn1p_expr_s *expr);
+
+
 #endif	/* ASN1_PARSER_MODULE_H */
diff --git a/libasn1parser/asn1p_xports.c b/libasn1parser/asn1p_xports.c
index 8f46ac1..8ba511a 100644
--- a/libasn1parser/asn1p_xports.c
+++ b/libasn1parser/asn1p_xports.c
@@ -13,7 +13,7 @@
 
 	xp = calloc(1, sizeof *xp);
 	if(xp) {
-		TQ_INIT(&(xp->members));
+		TQ_INIT(&(xp->xp_members));
 	}
 
 	return xp;
@@ -30,7 +30,7 @@
 		free(xp->fromModuleName);
 		asn1p_oid_free(xp->identifier.oid);
 
-		while((expr = TQ_REMOVE(&(xp->members), next)))
+		while((expr = TQ_REMOVE(&(xp->xp_members), next)))
 			asn1p_expr_free(expr);
 
 		free(xp);
diff --git a/libasn1parser/asn1p_xports.h b/libasn1parser/asn1p_xports.h
index da90de5..0c65be0 100644
--- a/libasn1parser/asn1p_xports.h
+++ b/libasn1parser/asn1p_xports.h
@@ -26,7 +26,7 @@
 	/*
 	 * Number of entities to import.
 	 */
-	TQ_HEAD(struct asn1p_expr_s)	members;
+	TQ_HEAD(struct asn1p_expr_s)	xp_members;
 
 	/*
 	 * Pointer to the next xports structure in whatever list.
diff --git a/libasn1parser/asn1p_y.c b/libasn1parser/asn1p_y.c
index 305532e..2d4860d 100644
--- a/libasn1parser/asn1p_y.c
+++ b/libasn1parser/asn1p_y.c
@@ -394,15 +394,14 @@
 #ifdef	AL_IMPORT
 #error	AL_IMPORT DEFINED ELSEWHERE!
 #endif
-#define	AL_IMPORT(to,where,from,field)	do {				\
-		if(!(from)) break;					\
-		while(TQ_FIRST(&((from)->where))) {			\
-			TQ_ADD(&((to)->where),				\
-				TQ_REMOVE(&((from)->where), field),	\
-				field);					\
-		}							\
-		assert(TQ_FIRST(&((from)->where)) == 0);		\
-	} while(0)
+#define AL_IMPORT(to, where, from, field)                                      \
+    do {                                                                       \
+        if(!(from)) break;                                                     \
+        while(TQ_FIRST(&((from)->where))) {                                    \
+            TQ_ADD(&((to)->where), TQ_REMOVE(&((from)->where), field), field); \
+        }                                                                      \
+        assert(TQ_FIRST(&((from)->where)) == 0);                               \
+    } while(0)
 
 
 
@@ -426,7 +425,7 @@
 
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
-#line 116 "asn1p_y.y"
+#line 115 "asn1p_y.y"
 {
 	asn1p_t			*a_grammar;
 	asn1p_module_flags_e	 a_module_flags;
@@ -462,7 +461,7 @@
 	} tv_nametag;
 }
 /* Line 193 of yacc.c.  */
-#line 466 "asn1p_y.c"
+#line 465 "asn1p_y.c"
 	YYSTYPE;
 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
@@ -475,7 +474,7 @@
 
 
 /* Line 216 of yacc.c.  */
-#line 479 "asn1p_y.c"
+#line 478 "asn1p_y.c"
 
 #ifdef short
 # undef short
@@ -895,41 +894,41 @@
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   415,   415,   418,   424,   429,   446,   446,   475,   476,
-     480,   483,   489,   495,   504,   508,   512,   522,   523,   532,
-     535,   544,   547,   550,   553,   557,   578,   579,   588,   601,
-     604,   621,   628,   642,   650,   649,   663,   676,   677,   680,
-     690,   696,   697,   700,   705,   712,   713,   717,   728,   733,
-     740,   746,   752,   762,   763,   775,   778,   781,   789,   794,
-     801,   807,   813,   822,   825,   845,   855,   875,   881,   897,
-     903,   911,   920,   931,   935,   943,   951,   959,   970,   975,
-     982,   983,   991,   999,  1022,  1023,  1026,  1031,  1035,  1043,
-    1050,  1056,  1063,  1069,  1074,  1081,  1086,  1089,  1096,  1106,
-    1107,  1111,  1118,  1128,  1138,  1149,  1159,  1170,  1180,  1191,
-    1203,  1204,  1211,  1210,  1219,  1223,  1230,  1234,  1237,  1241,
-    1247,  1255,  1264,  1275,  1278,  1285,  1308,  1331,  1355,  1362,
-    1381,  1382,  1385,  1386,  1392,  1398,  1404,  1414,  1424,  1430,
-    1442,  1457,  1465,  1473,  1484,  1495,  1517,  1525,  1534,  1538,
-    1543,  1552,  1557,  1562,  1570,  1593,  1603,  1604,  1605,  1605,
-    1613,  1618,  1623,  1628,  1629,  1630,  1631,  1635,  1636,  1654,
-    1658,  1663,  1671,  1680,  1695,  1696,  1702,  1703,  1704,  1705,
-    1706,  1707,  1708,  1709,  1710,  1711,  1712,  1713,  1714,  1721,
-    1722,  1723,  1727,  1733,  1738,  1743,  1748,  1753,  1762,  1763,
-    1767,  1771,  1772,  1773,  1774,  1775,  1779,  1780,  1781,  1782,
-    1786,  1787,  1794,  1794,  1795,  1795,  1799,  1800,  1804,  1805,
-    1809,  1810,  1811,  1815,  1821,  1822,  1831,  1831,  1833,  1836,
-    1840,  1841,  1847,  1858,  1859,  1865,  1866,  1872,  1873,  1880,
-    1881,  1887,  1888,  1899,  1905,  1911,  1912,  1914,  1915,  1916,
-    1921,  1926,  1931,  1936,  1948,  1957,  1958,  1964,  1965,  1970,
-    1973,  1978,  1986,  1992,  2004,  2007,  2013,  2014,  2014,  2015,
-    2017,  2030,  2035,  2041,  2055,  2056,  2060,  2063,  2066,  2074,
-    2075,  2076,  2081,  2080,  2092,  2101,  2102,  2103,  2104,  2107,
-    2110,  2119,  2135,  2141,  2147,  2161,  2172,  2188,  2191,  2211,
-    2215,  2219,  2223,  2230,  2235,  2241,  2250,  2255,  2262,  2270,
-    2280,  2285,  2292,  2300,  2310,  2325,  2330,  2337,  2344,  2352,
-    2360,  2367,  2378,  2382,  2389,  2420,  2421,  2425,  2432,  2438,
-    2439,  2440,  2441,  2445,  2446,  2447,  2451,  2455,  2463,  2464,
-    2470,  2477,  2484
+       0,   414,   414,   417,   423,   428,   445,   445,   474,   475,
+     479,   482,   488,   494,   503,   507,   511,   521,   522,   531,
+     534,   543,   546,   549,   552,   556,   577,   578,   587,   600,
+     603,   620,   627,   641,   649,   648,   662,   675,   676,   679,
+     689,   695,   696,   699,   704,   711,   712,   716,   727,   732,
+     739,   745,   751,   761,   762,   774,   777,   780,   788,   793,
+     800,   806,   812,   821,   824,   844,   854,   874,   880,   896,
+     902,   910,   919,   930,   934,   942,   950,   958,   969,   974,
+     981,   982,   990,   998,  1021,  1022,  1025,  1030,  1034,  1042,
+    1049,  1055,  1062,  1068,  1073,  1080,  1085,  1088,  1095,  1105,
+    1106,  1110,  1117,  1127,  1137,  1148,  1158,  1169,  1179,  1190,
+    1202,  1203,  1210,  1209,  1218,  1222,  1229,  1233,  1236,  1240,
+    1246,  1254,  1263,  1274,  1277,  1284,  1307,  1330,  1354,  1361,
+    1380,  1381,  1384,  1385,  1391,  1397,  1403,  1413,  1423,  1429,
+    1441,  1456,  1464,  1472,  1483,  1494,  1516,  1524,  1533,  1537,
+    1542,  1551,  1556,  1561,  1569,  1592,  1602,  1603,  1604,  1604,
+    1612,  1617,  1622,  1627,  1628,  1629,  1630,  1634,  1635,  1653,
+    1657,  1662,  1670,  1679,  1694,  1695,  1701,  1702,  1703,  1704,
+    1705,  1706,  1707,  1708,  1709,  1710,  1711,  1712,  1713,  1720,
+    1721,  1722,  1726,  1732,  1737,  1742,  1747,  1752,  1761,  1762,
+    1766,  1770,  1771,  1772,  1773,  1774,  1778,  1779,  1780,  1781,
+    1785,  1786,  1793,  1793,  1794,  1794,  1798,  1799,  1803,  1804,
+    1808,  1809,  1810,  1814,  1820,  1821,  1830,  1830,  1832,  1835,
+    1839,  1840,  1846,  1857,  1858,  1864,  1865,  1871,  1872,  1879,
+    1880,  1886,  1887,  1898,  1904,  1910,  1911,  1913,  1914,  1915,
+    1920,  1925,  1930,  1935,  1947,  1956,  1957,  1963,  1964,  1969,
+    1972,  1977,  1985,  1991,  2003,  2006,  2012,  2013,  2013,  2014,
+    2016,  2029,  2034,  2040,  2054,  2055,  2059,  2062,  2065,  2073,
+    2074,  2075,  2080,  2079,  2091,  2100,  2101,  2102,  2103,  2106,
+    2109,  2118,  2134,  2140,  2146,  2160,  2171,  2187,  2190,  2210,
+    2214,  2218,  2222,  2229,  2234,  2240,  2249,  2254,  2261,  2269,
+    2279,  2284,  2291,  2299,  2309,  2324,  2329,  2336,  2343,  2351,
+    2359,  2366,  2377,  2381,  2388,  2419,  2420,  2424,  2431,  2437,
+    2438,  2439,  2440,  2444,  2445,  2446,  2450,  2454,  2462,  2463,
+    2469,  2476,  2483
 };
 #endif
 
@@ -2342,21 +2341,21 @@
   switch (yyn)
     {
         case 2:
-#line 415 "asn1p_y.y"
+#line 414 "asn1p_y.y"
     {
 		*(void **)param = (yyvsp[(2) - (2)].a_grammar);
 	}
     break;
 
   case 3:
-#line 418 "asn1p_y.y"
+#line 417 "asn1p_y.y"
     {
 		*(void **)param = (yyvsp[(1) - (1)].a_grammar);
 	}
     break;
 
   case 4:
-#line 424 "asn1p_y.y"
+#line 423 "asn1p_y.y"
     {
 		(yyval.a_grammar) = asn1p_new();
 		checkmem((yyval.a_grammar));
@@ -2365,7 +2364,7 @@
     break;
 
   case 5:
-#line 429 "asn1p_y.y"
+#line 428 "asn1p_y.y"
     {
 		(yyval.a_grammar) = (yyvsp[(1) - (2)].a_grammar);
 		TQ_ADD(&((yyval.a_grammar)->modules), (yyvsp[(2) - (2)].a_module), mod_next);
@@ -2373,12 +2372,12 @@
     break;
 
   case 6:
-#line 446 "asn1p_y.y"
+#line 445 "asn1p_y.y"
     { currentModule = asn1p_module_new(); }
     break;
 
   case 7:
-#line 451 "asn1p_y.y"
+#line 450 "asn1p_y.y"
     {
 
 		(yyval.a_module) = currentModule;
@@ -2399,31 +2398,31 @@
     break;
 
   case 8:
-#line 475 "asn1p_y.y"
+#line 474 "asn1p_y.y"
     { (yyval.a_oid) = 0; }
     break;
 
   case 9:
-#line 476 "asn1p_y.y"
+#line 475 "asn1p_y.y"
     { (yyval.a_oid) = (yyvsp[(1) - (1)].a_oid); }
     break;
 
   case 10:
-#line 480 "asn1p_y.y"
+#line 479 "asn1p_y.y"
     {
 		(yyval.a_oid) = (yyvsp[(2) - (3)].a_oid);
 	}
     break;
 
   case 11:
-#line 483 "asn1p_y.y"
+#line 482 "asn1p_y.y"
     {
 		(yyval.a_oid) = 0;
 	}
     break;
 
   case 12:
-#line 489 "asn1p_y.y"
+#line 488 "asn1p_y.y"
     {
 		(yyval.a_oid) = asn1p_oid_new();
 		asn1p_oid_add_arc((yyval.a_oid), &(yyvsp[(1) - (1)].a_oid_arc));
@@ -2433,7 +2432,7 @@
     break;
 
   case 13:
-#line 495 "asn1p_y.y"
+#line 494 "asn1p_y.y"
     {
 		(yyval.a_oid) = (yyvsp[(1) - (2)].a_oid);
 		asn1p_oid_add_arc((yyval.a_oid), &(yyvsp[(2) - (2)].a_oid_arc));
@@ -2443,7 +2442,7 @@
     break;
 
   case 14:
-#line 504 "asn1p_y.y"
+#line 503 "asn1p_y.y"
     {					/* iso */
 		(yyval.a_oid_arc).name = (yyvsp[(1) - (1)].tv_str);
 		(yyval.a_oid_arc).number = -1;
@@ -2451,7 +2450,7 @@
     break;
 
   case 15:
-#line 508 "asn1p_y.y"
+#line 507 "asn1p_y.y"
     {		/* iso(1) */
 		(yyval.a_oid_arc).name = (yyvsp[(1) - (4)].tv_str);
 		(yyval.a_oid_arc).number = (yyvsp[(3) - (4)].a_int);
@@ -2459,7 +2458,7 @@
     break;
 
   case 16:
-#line 512 "asn1p_y.y"
+#line 511 "asn1p_y.y"
     {					/* 1 */
 		(yyval.a_oid_arc).name = 0;
 		(yyval.a_oid_arc).number = (yyvsp[(1) - (1)].a_int);
@@ -2467,61 +2466,61 @@
     break;
 
   case 17:
-#line 522 "asn1p_y.y"
+#line 521 "asn1p_y.y"
     { (yyval.a_module_flags) = MSF_NOFLAGS; }
     break;
 
   case 18:
-#line 523 "asn1p_y.y"
+#line 522 "asn1p_y.y"
     {
 		(yyval.a_module_flags) = (yyvsp[(1) - (1)].a_module_flags);
 	}
     break;
 
   case 19:
-#line 532 "asn1p_y.y"
+#line 531 "asn1p_y.y"
     {
 		(yyval.a_module_flags) = (yyvsp[(1) - (1)].a_module_flags);
 	}
     break;
 
   case 20:
-#line 535 "asn1p_y.y"
+#line 534 "asn1p_y.y"
     {
 		(yyval.a_module_flags) = (yyvsp[(1) - (2)].a_module_flags) | (yyvsp[(2) - (2)].a_module_flags);
 	}
     break;
 
   case 21:
-#line 544 "asn1p_y.y"
+#line 543 "asn1p_y.y"
     {
 		(yyval.a_module_flags) = MSF_EXPLICIT_TAGS;
 	}
     break;
 
   case 22:
-#line 547 "asn1p_y.y"
+#line 546 "asn1p_y.y"
     {
 		(yyval.a_module_flags) = MSF_IMPLICIT_TAGS;
 	}
     break;
 
   case 23:
-#line 550 "asn1p_y.y"
+#line 549 "asn1p_y.y"
     {
 		(yyval.a_module_flags) = MSF_AUTOMATIC_TAGS;
 	}
     break;
 
   case 24:
-#line 553 "asn1p_y.y"
+#line 552 "asn1p_y.y"
     {
 		(yyval.a_module_flags) = MSF_EXTENSIBILITY_IMPLIED;
 	}
     break;
 
   case 25:
-#line 557 "asn1p_y.y"
+#line 556 "asn1p_y.y"
     {
 		/* X.680Amd1 specifies TAG and XER */
 		if(strcmp((yyvsp[(1) - (2)].tv_str), "TAG") == 0) {
@@ -2540,24 +2539,24 @@
     break;
 
   case 26:
-#line 578 "asn1p_y.y"
+#line 577 "asn1p_y.y"
     { (yyval.a_module) = 0; }
     break;
 
   case 27:
-#line 579 "asn1p_y.y"
+#line 578 "asn1p_y.y"
     {
 		(yyval.a_module) = (yyvsp[(1) - (1)].a_module);
 	}
     break;
 
   case 28:
-#line 588 "asn1p_y.y"
+#line 587 "asn1p_y.y"
     {
 		(yyval.a_module) = asn1p_module_new();
 		AL_IMPORT((yyval.a_module), exports, (yyvsp[(1) - (3)].a_module), xp_next);
 		AL_IMPORT((yyval.a_module), imports, (yyvsp[(2) - (3)].a_module), xp_next);
-		AL_IMPORT((yyval.a_module), members, (yyvsp[(3) - (3)].a_module), next);
+		asn1p_module_move_members((yyval.a_module), (yyvsp[(3) - (3)].a_module));
 
 		asn1p_module_free((yyvsp[(1) - (3)].a_module));
 		asn1p_module_free((yyvsp[(2) - (3)].a_module));
@@ -2566,14 +2565,14 @@
     break;
 
   case 29:
-#line 601 "asn1p_y.y"
+#line 600 "asn1p_y.y"
     {
 		(yyval.a_module) = (yyvsp[(1) - (1)].a_module);
 	}
     break;
 
   case 30:
-#line 604 "asn1p_y.y"
+#line 603 "asn1p_y.y"
     {
 		if((yyvsp[(1) - (2)].a_module)) {
 			(yyval.a_module) = (yyvsp[(1) - (2)].a_module);
@@ -2581,51 +2580,51 @@
 			(yyval.a_module) = (yyvsp[(2) - (2)].a_module);
 			break;
 		}
-		AL_IMPORT((yyval.a_module), members, (yyvsp[(2) - (2)].a_module), next);
+        asn1p_module_move_members((yyval.a_module), (yyvsp[(2) - (2)].a_module));
 		asn1p_module_free((yyvsp[(2) - (2)].a_module));
 	}
     break;
 
   case 31:
-#line 621 "asn1p_y.y"
+#line 620 "asn1p_y.y"
     {
 		(yyval.a_module) = asn1p_module_new();
 		checkmem((yyval.a_module));
 		assert((yyvsp[(1) - (1)].a_expr)->expr_type != A1TC_INVALID);
 		assert((yyvsp[(1) - (1)].a_expr)->meta_type != AMT_INVALID);
-		TQ_ADD(&((yyval.a_module)->members), (yyvsp[(1) - (1)].a_expr), next);
+		asn1p_module_member_add((yyval.a_module), (yyvsp[(1) - (1)].a_expr));
 	}
     break;
 
   case 32:
-#line 628 "asn1p_y.y"
+#line 627 "asn1p_y.y"
     {
 		(yyval.a_module) = asn1p_module_new();
 		checkmem((yyval.a_module));
 		assert((yyvsp[(1) - (1)].a_expr)->expr_type != A1TC_INVALID);
 		assert((yyvsp[(1) - (1)].a_expr)->meta_type != AMT_INVALID);
-		TQ_ADD(&((yyval.a_module)->members), (yyvsp[(1) - (1)].a_expr), next);
+		asn1p_module_member_add((yyval.a_module), (yyvsp[(1) - (1)].a_expr));
 	}
     break;
 
   case 33:
-#line 642 "asn1p_y.y"
+#line 641 "asn1p_y.y"
     {
 		(yyval.a_module) = asn1p_module_new();
 		checkmem((yyval.a_module));
 		assert((yyvsp[(1) - (1)].a_expr)->expr_type != A1TC_INVALID);
 		assert((yyvsp[(1) - (1)].a_expr)->meta_type != AMT_INVALID);
-		TQ_ADD(&((yyval.a_module)->members), (yyvsp[(1) - (1)].a_expr), next);
+		asn1p_module_member_add((yyval.a_module), (yyvsp[(1) - (1)].a_expr));
 	}
     break;
 
   case 34:
-#line 650 "asn1p_y.y"
+#line 649 "asn1p_y.y"
     { asn1p_lexer_hack_push_encoding_control(); }
     break;
 
   case 35:
-#line 651 "asn1p_y.y"
+#line 650 "asn1p_y.y"
     {
 		fprintf(stderr,
 			"WARNING: ENCODING-CONTROL %s "
@@ -2637,7 +2636,7 @@
     break;
 
   case 36:
-#line 663 "asn1p_y.y"
+#line 662 "asn1p_y.y"
     {
 		return yyerror(
 			"Attempt to redefine a standard basic string type, "
@@ -2646,12 +2645,12 @@
     break;
 
   case 37:
-#line 676 "asn1p_y.y"
+#line 675 "asn1p_y.y"
     { (yyval.a_module) = 0; }
     break;
 
   case 39:
-#line 680 "asn1p_y.y"
+#line 679 "asn1p_y.y"
     {
 		if(!saved_aid && 0)
 			return yyerror("Unterminated IMPORTS FROM, "
@@ -2662,19 +2661,19 @@
     break;
 
   case 40:
-#line 690 "asn1p_y.y"
+#line 689 "asn1p_y.y"
     {
 		return yyerror("Empty IMPORTS list");
 	}
     break;
 
   case 41:
-#line 696 "asn1p_y.y"
+#line 695 "asn1p_y.y"
     { (yyval.a_module) = asn1p_module_new(); }
     break;
 
   case 43:
-#line 700 "asn1p_y.y"
+#line 699 "asn1p_y.y"
     {
 		(yyval.a_module) = asn1p_module_new();
 		checkmem((yyval.a_module));
@@ -2683,7 +2682,7 @@
     break;
 
   case 44:
-#line 705 "asn1p_y.y"
+#line 704 "asn1p_y.y"
     {
 		(yyval.a_module) = (yyvsp[(1) - (2)].a_module);
 		TQ_ADD(&((yyval.a_module)->imports), (yyvsp[(2) - (2)].a_xports), xp_next);
@@ -2691,17 +2690,17 @@
     break;
 
   case 45:
-#line 712 "asn1p_y.y"
+#line 711 "asn1p_y.y"
     { memset(&(yyval.a_aid), 0, sizeof((yyval.a_aid))); }
     break;
 
   case 46:
-#line 713 "asn1p_y.y"
+#line 712 "asn1p_y.y"
     { (yyval.a_aid).oid = (yyvsp[(1) - (1)].a_oid); }
     break;
 
   case 47:
-#line 717 "asn1p_y.y"
+#line 716 "asn1p_y.y"
     {
 		(yyval.a_xports) = (yyvsp[(1) - (4)].a_xports);
 		(yyval.a_xports)->fromModuleName = (yyvsp[(3) - (4)].tv_str);
@@ -2713,24 +2712,24 @@
     break;
 
   case 48:
-#line 728 "asn1p_y.y"
+#line 727 "asn1p_y.y"
     {
 		(yyval.a_xports) = asn1p_xports_new();
 		checkmem((yyval.a_xports));
-		TQ_ADD(&((yyval.a_xports)->members), (yyvsp[(1) - (1)].a_expr), next);
+		TQ_ADD(&((yyval.a_xports)->xp_members), (yyvsp[(1) - (1)].a_expr), next);
 	}
     break;
 
   case 49:
-#line 733 "asn1p_y.y"
+#line 732 "asn1p_y.y"
     {
 		(yyval.a_xports) = (yyvsp[(1) - (3)].a_xports);
-		TQ_ADD(&((yyval.a_xports)->members), (yyvsp[(3) - (3)].a_expr), next);
+		TQ_ADD(&((yyval.a_xports)->xp_members), (yyvsp[(3) - (3)].a_expr), next);
 	}
     break;
 
   case 50:
-#line 740 "asn1p_y.y"
+#line 739 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -2740,7 +2739,7 @@
     break;
 
   case 51:
-#line 746 "asn1p_y.y"
+#line 745 "asn1p_y.y"
     {		/* Completely equivalent to above */
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -2750,7 +2749,7 @@
     break;
 
   case 52:
-#line 752 "asn1p_y.y"
+#line 751 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -2760,12 +2759,12 @@
     break;
 
   case 53:
-#line 762 "asn1p_y.y"
+#line 761 "asn1p_y.y"
     { (yyval.a_module) = 0; }
     break;
 
   case 54:
-#line 763 "asn1p_y.y"
+#line 762 "asn1p_y.y"
     {
 		(yyval.a_module) = asn1p_module_new();
 		checkmem((yyval.a_module));
@@ -2778,21 +2777,21 @@
     break;
 
   case 55:
-#line 775 "asn1p_y.y"
+#line 774 "asn1p_y.y"
     {
 		(yyval.a_xports) = (yyvsp[(2) - (3)].a_xports);
 	}
     break;
 
   case 56:
-#line 778 "asn1p_y.y"
+#line 777 "asn1p_y.y"
     {
 		(yyval.a_xports) = 0;
 	}
     break;
 
   case 57:
-#line 781 "asn1p_y.y"
+#line 780 "asn1p_y.y"
     {
 		/* Empty EXPORTS clause effectively prohibits export. */
 		(yyval.a_xports) = asn1p_xports_new();
@@ -2801,24 +2800,24 @@
     break;
 
   case 58:
-#line 789 "asn1p_y.y"
+#line 788 "asn1p_y.y"
     {
 		(yyval.a_xports) = asn1p_xports_new();
 		assert((yyval.a_xports));
-		TQ_ADD(&((yyval.a_xports)->members), (yyvsp[(1) - (1)].a_expr), next);
+		TQ_ADD(&((yyval.a_xports)->xp_members), (yyvsp[(1) - (1)].a_expr), next);
 	}
     break;
 
   case 59:
-#line 794 "asn1p_y.y"
+#line 793 "asn1p_y.y"
     {
 		(yyval.a_xports) = (yyvsp[(1) - (3)].a_xports);
-		TQ_ADD(&((yyval.a_xports)->members), (yyvsp[(3) - (3)].a_expr), next);
+		TQ_ADD(&((yyval.a_xports)->xp_members), (yyvsp[(3) - (3)].a_expr), next);
 	}
     break;
 
   case 60:
-#line 801 "asn1p_y.y"
+#line 800 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -2828,7 +2827,7 @@
     break;
 
   case 61:
-#line 807 "asn1p_y.y"
+#line 806 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -2838,7 +2837,7 @@
     break;
 
   case 62:
-#line 813 "asn1p_y.y"
+#line 812 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -2848,12 +2847,12 @@
     break;
 
   case 63:
-#line 822 "asn1p_y.y"
+#line 821 "asn1p_y.y"
     { (yyval.a_constr) = (yyvsp[(2) - (3)].a_constr); }
     break;
 
   case 64:
-#line 825 "asn1p_y.y"
+#line 824 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(2) - (4)].a_expr);
 		assert((yyval.a_expr)->Identifier == 0);
@@ -2864,7 +2863,7 @@
     break;
 
   case 65:
-#line 845 "asn1p_y.y"
+#line 844 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -2875,7 +2874,7 @@
     break;
 
   case 66:
-#line 855 "asn1p_y.y"
+#line 854 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -2887,7 +2886,7 @@
     break;
 
   case 67:
-#line 875 "asn1p_y.y"
+#line 874 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(3) - (3)].a_expr);
 		(yyval.a_expr)->Identifier = (yyvsp[(1) - (3)].tv_str);
@@ -2897,7 +2896,7 @@
     break;
 
   case 68:
-#line 881 "asn1p_y.y"
+#line 880 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(3) - (3)].a_expr);
 		(yyval.a_expr)->Identifier = (yyvsp[(1) - (3)].tv_str);
@@ -2907,7 +2906,7 @@
     break;
 
   case 69:
-#line 897 "asn1p_y.y"
+#line 896 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(6) - (6)].a_expr);
 		(yyval.a_expr)->Identifier = (yyvsp[(1) - (6)].tv_str);
@@ -2916,7 +2915,7 @@
     break;
 
   case 70:
-#line 903 "asn1p_y.y"
+#line 902 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(6) - (6)].a_expr);
 		(yyval.a_expr)->Identifier = (yyvsp[(1) - (6)].tv_str);
@@ -2925,7 +2924,7 @@
     break;
 
   case 71:
-#line 911 "asn1p_y.y"
+#line 910 "asn1p_y.y"
     {
 		int ret;
 		(yyval.a_plist) = asn1p_paramlist_new(yylineno);
@@ -2938,7 +2937,7 @@
     break;
 
   case 72:
-#line 920 "asn1p_y.y"
+#line 919 "asn1p_y.y"
     {
 		int ret;
 		(yyval.a_plist) = (yyvsp[(1) - (3)].a_plist);
@@ -2950,7 +2949,7 @@
     break;
 
   case 73:
-#line 931 "asn1p_y.y"
+#line 930 "asn1p_y.y"
     {
 		(yyval.a_parg).governor = NULL;
 		(yyval.a_parg).argument = (yyvsp[(1) - (1)].tv_str);
@@ -2958,7 +2957,7 @@
     break;
 
   case 74:
-#line 935 "asn1p_y.y"
+#line 934 "asn1p_y.y"
     {
 		int ret;
 		(yyval.a_parg).governor = asn1p_ref_new(yylineno, currentModule);
@@ -2970,7 +2969,7 @@
     break;
 
   case 75:
-#line 943 "asn1p_y.y"
+#line 942 "asn1p_y.y"
     {
 		int ret;
 		(yyval.a_parg).governor = asn1p_ref_new(yylineno, currentModule);
@@ -2982,7 +2981,7 @@
     break;
 
   case 76:
-#line 951 "asn1p_y.y"
+#line 950 "asn1p_y.y"
     {
 		int ret;
 		(yyval.a_parg).governor = asn1p_ref_new(yylineno, currentModule);
@@ -2994,7 +2993,7 @@
     break;
 
   case 77:
-#line 959 "asn1p_y.y"
+#line 958 "asn1p_y.y"
     {
 		int ret;
 		(yyval.a_parg).governor = asn1p_ref_new(yylineno, currentModule);
@@ -3006,7 +3005,7 @@
     break;
 
   case 78:
-#line 970 "asn1p_y.y"
+#line 969 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -3015,7 +3014,7 @@
     break;
 
   case 79:
-#line 975 "asn1p_y.y"
+#line 974 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(1) - (3)].a_expr);
 		asn1p_expr_add((yyval.a_expr), (yyvsp[(3) - (3)].a_expr));
@@ -3023,7 +3022,7 @@
     break;
 
   case 81:
-#line 983 "asn1p_y.y"
+#line 982 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -3035,7 +3034,7 @@
     break;
 
   case 82:
-#line 991 "asn1p_y.y"
+#line 990 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -3047,7 +3046,7 @@
     break;
 
   case 83:
-#line 999 "asn1p_y.y"
+#line 998 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		(yyval.a_expr)->expr_type = A1TC_VALUESET;
@@ -3057,17 +3056,17 @@
     break;
 
   case 84:
-#line 1022 "asn1p_y.y"
+#line 1021 "asn1p_y.y"
     { (yyval.a_expr) = NEW_EXPR(); }
     break;
 
   case 85:
-#line 1023 "asn1p_y.y"
+#line 1022 "asn1p_y.y"
     { (yyval.a_expr) = (yyvsp[(1) - (1)].a_expr); }
     break;
 
   case 86:
-#line 1026 "asn1p_y.y"
+#line 1025 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -3076,7 +3075,7 @@
     break;
 
   case 87:
-#line 1031 "asn1p_y.y"
+#line 1030 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(1) - (3)].a_expr);
 		asn1p_expr_add((yyval.a_expr), (yyvsp[(3) - (3)].a_expr));
@@ -3084,7 +3083,7 @@
     break;
 
   case 88:
-#line 1035 "asn1p_y.y"
+#line 1034 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(1) - (5)].a_expr);
 		asn1p_expr_add_many((yyval.a_expr), (yyvsp[(4) - (5)].a_expr));
@@ -3093,7 +3092,7 @@
     break;
 
   case 89:
-#line 1043 "asn1p_y.y"
+#line 1042 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(2) - (3)].a_expr);
 		assert((yyval.a_expr)->Identifier == 0);
@@ -3104,7 +3103,7 @@
     break;
 
   case 90:
-#line 1050 "asn1p_y.y"
+#line 1049 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(1) - (2)].a_expr);
 		(yyvsp[(2) - (2)].a_marker).flags |= (yyval.a_expr)->marker.flags;
@@ -3114,7 +3113,7 @@
     break;
 
   case 91:
-#line 1056 "asn1p_y.y"
+#line 1055 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -3125,14 +3124,14 @@
     break;
 
   case 92:
-#line 1063 "asn1p_y.y"
+#line 1062 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(1) - (1)].a_expr);
 	}
     break;
 
   case 93:
-#line 1069 "asn1p_y.y"
+#line 1068 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -3141,7 +3140,7 @@
     break;
 
   case 94:
-#line 1074 "asn1p_y.y"
+#line 1073 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(1) - (3)].a_expr);
 		asn1p_expr_add((yyval.a_expr), (yyvsp[(3) - (3)].a_expr));
@@ -3149,7 +3148,7 @@
     break;
 
   case 95:
-#line 1081 "asn1p_y.y"
+#line 1080 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(2) - (2)].a_expr);
 		assert((yyval.a_expr)->Identifier == 0);
@@ -3158,14 +3157,14 @@
     break;
 
   case 96:
-#line 1086 "asn1p_y.y"
+#line 1085 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(1) - (1)].a_expr);
 	}
     break;
 
   case 97:
-#line 1089 "asn1p_y.y"
+#line 1088 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(1) - (1)].a_expr);
 		_fixup_anonymous_identifier((yyval.a_expr));
@@ -3173,7 +3172,7 @@
     break;
 
   case 98:
-#line 1096 "asn1p_y.y"
+#line 1095 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(3) - (5)].a_expr);
 		checkmem((yyval.a_expr));
@@ -3184,17 +3183,17 @@
     break;
 
   case 99:
-#line 1106 "asn1p_y.y"
+#line 1105 "asn1p_y.y"
     { (yyval.a_int) = 0; }
     break;
 
   case 100:
-#line 1107 "asn1p_y.y"
+#line 1106 "asn1p_y.y"
     { (yyval.a_int) = 1; }
     break;
 
   case 101:
-#line 1111 "asn1p_y.y"
+#line 1110 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -3205,7 +3204,7 @@
     break;
 
   case 102:
-#line 1118 "asn1p_y.y"
+#line 1117 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(1) - (3)].a_expr);
 		asn1p_expr_add((yyval.a_expr), (yyvsp[(3) - (3)].a_expr));
@@ -3213,7 +3212,7 @@
     break;
 
   case 103:
-#line 1128 "asn1p_y.y"
+#line 1127 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -3225,7 +3224,7 @@
     break;
 
   case 104:
-#line 1138 "asn1p_y.y"
+#line 1137 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		(yyval.a_expr)->Identifier = (yyvsp[(1) - (4)].tv_str);
@@ -3238,7 +3237,7 @@
     break;
 
   case 105:
-#line 1149 "asn1p_y.y"
+#line 1148 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		(yyval.a_expr)->Identifier = (yyvsp[(1) - (3)].tv_str);
@@ -3250,7 +3249,7 @@
     break;
 
   case 106:
-#line 1159 "asn1p_y.y"
+#line 1158 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -3263,7 +3262,7 @@
     break;
 
   case 107:
-#line 1170 "asn1p_y.y"
+#line 1169 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		(yyval.a_expr)->Identifier = (yyvsp[(1) - (3)].tv_str);
@@ -3275,7 +3274,7 @@
     break;
 
   case 108:
-#line 1180 "asn1p_y.y"
+#line 1179 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -3288,7 +3287,7 @@
     break;
 
   case 109:
-#line 1191 "asn1p_y.y"
+#line 1190 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -3301,31 +3300,31 @@
     break;
 
   case 110:
-#line 1203 "asn1p_y.y"
+#line 1202 "asn1p_y.y"
     { (yyval.a_wsynt) = 0; }
     break;
 
   case 111:
-#line 1204 "asn1p_y.y"
+#line 1203 "asn1p_y.y"
     {
 		(yyval.a_wsynt) = (yyvsp[(1) - (1)].a_wsynt);
 	}
     break;
 
   case 112:
-#line 1211 "asn1p_y.y"
+#line 1210 "asn1p_y.y"
     { asn1p_lexer_hack_enable_with_syntax(); }
     break;
 
   case 113:
-#line 1213 "asn1p_y.y"
+#line 1212 "asn1p_y.y"
     {
 		(yyval.a_wsynt) = (yyvsp[(5) - (6)].a_wsynt);
 	}
     break;
 
   case 114:
-#line 1219 "asn1p_y.y"
+#line 1218 "asn1p_y.y"
     {
 		(yyval.a_wsynt) = asn1p_wsyntx_new();
 		TQ_ADD(&((yyval.a_wsynt)->chunks), (yyvsp[(1) - (1)].a_wchunk), next);
@@ -3333,7 +3332,7 @@
     break;
 
   case 115:
-#line 1223 "asn1p_y.y"
+#line 1222 "asn1p_y.y"
     {
 		(yyval.a_wsynt) = (yyvsp[(1) - (2)].a_wsynt);
 		TQ_ADD(&((yyval.a_wsynt)->chunks), (yyvsp[(2) - (2)].a_wchunk), next);
@@ -3341,7 +3340,7 @@
     break;
 
   case 116:
-#line 1230 "asn1p_y.y"
+#line 1229 "asn1p_y.y"
     {
 		(yyval.a_wchunk) = asn1p_wsyntx_chunk_fromstring((yyvsp[(1) - (1)].tv_opaque).buf, 0);
 		(yyval.a_wchunk)->type = WC_WHITESPACE;
@@ -3349,14 +3348,14 @@
     break;
 
   case 117:
-#line 1234 "asn1p_y.y"
+#line 1233 "asn1p_y.y"
     {
 		(yyval.a_wchunk) = asn1p_wsyntx_chunk_fromstring((yyvsp[(1) - (1)].tv_str), 0);
 	}
     break;
 
   case 118:
-#line 1237 "asn1p_y.y"
+#line 1236 "asn1p_y.y"
     {
 		(yyval.a_wchunk) = asn1p_wsyntx_chunk_fromstring((yyvsp[(1) - (1)].a_refcomp).name, 0);
 		(yyval.a_wchunk)->type = WC_FIELD;
@@ -3364,14 +3363,14 @@
     break;
 
   case 119:
-#line 1241 "asn1p_y.y"
+#line 1240 "asn1p_y.y"
     {
 		(yyval.a_wchunk) = asn1p_wsyntx_chunk_fromsyntax((yyvsp[(2) - (3)].a_wsynt));
 	}
     break;
 
   case 120:
-#line 1247 "asn1p_y.y"
+#line 1246 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -3383,7 +3382,7 @@
     break;
 
   case 121:
-#line 1255 "asn1p_y.y"
+#line 1254 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -3396,7 +3395,7 @@
     break;
 
   case 122:
-#line 1264 "asn1p_y.y"
+#line 1263 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -3409,7 +3408,7 @@
     break;
 
   case 124:
-#line 1278 "asn1p_y.y"
+#line 1277 "asn1p_y.y"
     {
         (yyval.a_expr) = (yyvsp[(2) - (2)].a_expr);
         (yyval.a_expr)->tag = (yyvsp[(1) - (2)].a_tag);
@@ -3417,7 +3416,7 @@
     break;
 
   case 125:
-#line 1285 "asn1p_y.y"
+#line 1284 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(1) - (2)].a_expr);
 		/*
@@ -3441,7 +3440,7 @@
     break;
 
   case 126:
-#line 1308 "asn1p_y.y"
+#line 1307 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(1) - (2)].a_expr);
 		/*
@@ -3465,7 +3464,7 @@
     break;
 
   case 127:
-#line 1331 "asn1p_y.y"
+#line 1330 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(2) - (3)].a_expr);
 		(yyval.a_expr)->tag = (yyvsp[(1) - (3)].a_tag);
@@ -3490,7 +3489,7 @@
     break;
 
   case 128:
-#line 1355 "asn1p_y.y"
+#line 1354 "asn1p_y.y"
     {
 		(yyval.a_int) = asn1p_as_pointer ? EM_INDIRECT : 0;
 		asn1p_as_pointer = 0;
@@ -3498,7 +3497,7 @@
     break;
 
   case 129:
-#line 1362 "asn1p_y.y"
+#line 1361 "asn1p_y.y"
     {
         (yyval.a_expr) = (yyvsp[(2) - (2)].a_expr);
 		(yyval.a_expr)->marker.flags |= (yyvsp[(1) - (2)].a_int);
@@ -3518,7 +3517,7 @@
     break;
 
   case 133:
-#line 1386 "asn1p_y.y"
+#line 1385 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(3) - (4)].a_expr);
 		assert((yyval.a_expr)->expr_type == A1TC_INVALID);
@@ -3528,7 +3527,7 @@
     break;
 
   case 134:
-#line 1392 "asn1p_y.y"
+#line 1391 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(3) - (4)].a_expr);
 		assert((yyval.a_expr)->expr_type == A1TC_INVALID);
@@ -3538,7 +3537,7 @@
     break;
 
   case 135:
-#line 1398 "asn1p_y.y"
+#line 1397 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(3) - (4)].a_expr);
 		assert((yyval.a_expr)->expr_type == A1TC_INVALID);
@@ -3548,7 +3547,7 @@
     break;
 
   case 136:
-#line 1404 "asn1p_y.y"
+#line 1403 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -3562,7 +3561,7 @@
     break;
 
   case 137:
-#line 1414 "asn1p_y.y"
+#line 1413 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -3576,7 +3575,7 @@
     break;
 
   case 138:
-#line 1424 "asn1p_y.y"
+#line 1423 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -3586,7 +3585,7 @@
     break;
 
   case 139:
-#line 1430 "asn1p_y.y"
+#line 1429 "asn1p_y.y"
     {
 		int ret;
 		(yyval.a_expr) = NEW_EXPR();
@@ -3602,7 +3601,7 @@
     break;
 
   case 140:
-#line 1442 "asn1p_y.y"
+#line 1441 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -3613,7 +3612,7 @@
     break;
 
   case 141:
-#line 1457 "asn1p_y.y"
+#line 1456 "asn1p_y.y"
     {
 		int ret;
 		(yyval.a_ref) = asn1p_ref_new(yylineno, currentModule);
@@ -3625,7 +3624,7 @@
     break;
 
   case 142:
-#line 1465 "asn1p_y.y"
+#line 1464 "asn1p_y.y"
     {
 		int ret;
 		(yyval.a_ref) = asn1p_ref_new(yylineno, currentModule);
@@ -3637,7 +3636,7 @@
     break;
 
   case 143:
-#line 1473 "asn1p_y.y"
+#line 1472 "asn1p_y.y"
     {
 		int ret;
 		(yyval.a_ref) = asn1p_ref_new(yylineno, currentModule);
@@ -3652,7 +3651,7 @@
     break;
 
   case 144:
-#line 1484 "asn1p_y.y"
+#line 1483 "asn1p_y.y"
     {
 		int ret;
 		(yyval.a_ref) = asn1p_ref_new(yylineno, currentModule);
@@ -3667,7 +3666,7 @@
     break;
 
   case 145:
-#line 1495 "asn1p_y.y"
+#line 1494 "asn1p_y.y"
     {
 		int ret;
 		(yyval.a_ref) = (yyvsp[(3) - (3)].a_ref);
@@ -3690,7 +3689,7 @@
     break;
 
   case 146:
-#line 1517 "asn1p_y.y"
+#line 1516 "asn1p_y.y"
     {
 		int ret;
 		(yyval.a_ref) = asn1p_ref_new(yylineno, currentModule);
@@ -3702,7 +3701,7 @@
     break;
 
   case 147:
-#line 1525 "asn1p_y.y"
+#line 1524 "asn1p_y.y"
     {
 		int ret;
 		(yyval.a_ref) = (yyvsp[(1) - (3)].a_ref);
@@ -3713,7 +3712,7 @@
     break;
 
   case 149:
-#line 1538 "asn1p_y.y"
+#line 1537 "asn1p_y.y"
     {
 		(yyval.a_refcomp).lex_type = RLT_AmpUppercase;
 		(yyval.a_refcomp).name = (yyvsp[(1) - (1)].tv_str);
@@ -3721,7 +3720,7 @@
     break;
 
   case 150:
-#line 1543 "asn1p_y.y"
+#line 1542 "asn1p_y.y"
     {
 		(yyval.a_refcomp).lex_type = RLT_Amplowercase;
 		(yyval.a_refcomp).name = (yyvsp[(1) - (1)].tv_str);
@@ -3729,7 +3728,7 @@
     break;
 
   case 151:
-#line 1552 "asn1p_y.y"
+#line 1551 "asn1p_y.y"
     {
 		(yyval.a_ref) = asn1p_ref_new(yylineno, currentModule);
 		asn1p_ref_add_component((yyval.a_ref), (yyvsp[(1) - (1)].tv_str), RLT_AmpUppercase);
@@ -3738,7 +3737,7 @@
     break;
 
   case 152:
-#line 1557 "asn1p_y.y"
+#line 1556 "asn1p_y.y"
     {
 		(yyval.a_ref) = (yyval.a_ref);
 		asn1p_ref_add_component((yyval.a_ref), (yyvsp[(3) - (3)].tv_str), RLT_AmpUppercase);
@@ -3747,7 +3746,7 @@
     break;
 
   case 153:
-#line 1562 "asn1p_y.y"
+#line 1561 "asn1p_y.y"
     {
 		(yyval.a_ref) = (yyval.a_ref);
 		asn1p_ref_add_component((yyval.a_ref), (yyvsp[(3) - (3)].tv_str), RLT_Amplowercase);
@@ -3756,7 +3755,7 @@
     break;
 
   case 154:
-#line 1570 "asn1p_y.y"
+#line 1569 "asn1p_y.y"
     {
 		(yyval.a_ref) = asn1p_ref_new(yylineno, currentModule);
 		asn1p_ref_add_component((yyval.a_ref), (yyvsp[(1) - (1)].tv_str), RLT_CAPITALS);
@@ -3765,7 +3764,7 @@
     break;
 
   case 155:
-#line 1593 "asn1p_y.y"
+#line 1592 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(2) - (4)].a_expr);
 		assert((yyval.a_expr)->Identifier == NULL);
@@ -3776,12 +3775,12 @@
     break;
 
   case 158:
-#line 1605 "asn1p_y.y"
+#line 1604 "asn1p_y.y"
     { asn1p_lexer_hack_push_opaque_state(); }
     break;
 
   case 159:
-#line 1605 "asn1p_y.y"
+#line 1604 "asn1p_y.y"
     {
 		(yyval.a_value) = asn1p_value_frombuf((yyvsp[(3) - (3)].tv_opaque).buf, (yyvsp[(3) - (3)].tv_opaque).len, 0);
 		checkmem((yyval.a_value));
@@ -3790,7 +3789,7 @@
     break;
 
   case 160:
-#line 1613 "asn1p_y.y"
+#line 1612 "asn1p_y.y"
     {
 		(yyval.a_value) = asn1p_value_fromint(0);
 		checkmem((yyval.a_value));
@@ -3799,7 +3798,7 @@
     break;
 
   case 161:
-#line 1618 "asn1p_y.y"
+#line 1617 "asn1p_y.y"
     {
 		(yyval.a_value) = asn1p_value_fromint(0);
 		checkmem((yyval.a_value));
@@ -3808,7 +3807,7 @@
     break;
 
   case 162:
-#line 1623 "asn1p_y.y"
+#line 1622 "asn1p_y.y"
     {
 		(yyval.a_value) = asn1p_value_fromint(1);
 		checkmem((yyval.a_value));
@@ -3817,7 +3816,7 @@
     break;
 
   case 168:
-#line 1636 "asn1p_y.y"
+#line 1635 "asn1p_y.y"
     {
 		asn1p_ref_t *ref;
 		int ret;
@@ -3835,7 +3834,7 @@
     break;
 
   case 169:
-#line 1654 "asn1p_y.y"
+#line 1653 "asn1p_y.y"
     {
 		(yyval.a_value) = asn1p_value_frombuf((yyvsp[(1) - (1)].tv_opaque).buf, (yyvsp[(1) - (1)].tv_opaque).len, 0);
 		checkmem((yyval.a_value));
@@ -3843,7 +3842,7 @@
     break;
 
   case 170:
-#line 1658 "asn1p_y.y"
+#line 1657 "asn1p_y.y"
     {
 		(yyval.a_value) = asn1p_value_fromint((yyvsp[(1) - (1)].a_int));
 		checkmem((yyval.a_value));
@@ -3852,7 +3851,7 @@
     break;
 
   case 171:
-#line 1663 "asn1p_y.y"
+#line 1662 "asn1p_y.y"
     {
 		(yyval.a_value) = asn1p_value_fromint((yyvsp[(1) - (1)].a_int));
 		checkmem((yyval.a_value));
@@ -3861,7 +3860,7 @@
     break;
 
   case 172:
-#line 1671 "asn1p_y.y"
+#line 1670 "asn1p_y.y"
     {
 		(yyval.tv_opaque).len = (yyvsp[(1) - (1)].tv_opaque).len + 1;
 		(yyval.tv_opaque).buf = malloc(1 + (yyval.tv_opaque).len + 1);
@@ -3874,7 +3873,7 @@
     break;
 
   case 173:
-#line 1680 "asn1p_y.y"
+#line 1679 "asn1p_y.y"
     {
 		int newsize = (yyvsp[(1) - (2)].tv_opaque).len + (yyvsp[(2) - (2)].tv_opaque).len;
 		char *p = malloc(newsize + 1);
@@ -3890,7 +3889,7 @@
     break;
 
   case 175:
-#line 1696 "asn1p_y.y"
+#line 1695 "asn1p_y.y"
     {
         (yyval.tv_opaque).len = strlen((yyvsp[(1) - (1)].tv_str));
         (yyval.tv_opaque).buf = (yyvsp[(1) - (1)].tv_str);
@@ -3898,77 +3897,77 @@
     break;
 
   case 176:
-#line 1702 "asn1p_y.y"
+#line 1701 "asn1p_y.y"
     { (yyval.a_type) = ASN_BASIC_BOOLEAN; }
     break;
 
   case 177:
-#line 1703 "asn1p_y.y"
+#line 1702 "asn1p_y.y"
     { (yyval.a_type) = ASN_BASIC_NULL; }
     break;
 
   case 178:
-#line 1704 "asn1p_y.y"
+#line 1703 "asn1p_y.y"
     { (yyval.a_type) = ASN_BASIC_REAL; }
     break;
 
   case 179:
-#line 1705 "asn1p_y.y"
+#line 1704 "asn1p_y.y"
     { (yyval.a_type) = ASN_BASIC_OCTET_STRING; }
     break;
 
   case 180:
-#line 1706 "asn1p_y.y"
+#line 1705 "asn1p_y.y"
     { (yyval.a_type) = ASN_BASIC_OBJECT_IDENTIFIER; }
     break;
 
   case 181:
-#line 1707 "asn1p_y.y"
+#line 1706 "asn1p_y.y"
     { (yyval.a_type) = ASN_BASIC_RELATIVE_OID; }
     break;
 
   case 182:
-#line 1708 "asn1p_y.y"
+#line 1707 "asn1p_y.y"
     { (yyval.a_type) = ASN_BASIC_EXTERNAL; }
     break;
 
   case 183:
-#line 1709 "asn1p_y.y"
+#line 1708 "asn1p_y.y"
     { (yyval.a_type) = ASN_BASIC_EMBEDDED_PDV; }
     break;
 
   case 184:
-#line 1710 "asn1p_y.y"
+#line 1709 "asn1p_y.y"
     { (yyval.a_type) = ASN_BASIC_CHARACTER_STRING; }
     break;
 
   case 185:
-#line 1711 "asn1p_y.y"
+#line 1710 "asn1p_y.y"
     { (yyval.a_type) = ASN_BASIC_UTCTime; }
     break;
 
   case 186:
-#line 1712 "asn1p_y.y"
+#line 1711 "asn1p_y.y"
     { (yyval.a_type) = ASN_BASIC_GeneralizedTime; }
     break;
 
   case 189:
-#line 1721 "asn1p_y.y"
+#line 1720 "asn1p_y.y"
     { (yyval.a_type) = ASN_BASIC_INTEGER; }
     break;
 
   case 190:
-#line 1722 "asn1p_y.y"
+#line 1721 "asn1p_y.y"
     { (yyval.a_type) = ASN_BASIC_ENUMERATED; }
     break;
 
   case 191:
-#line 1723 "asn1p_y.y"
+#line 1722 "asn1p_y.y"
     { (yyval.a_type) = ASN_BASIC_BIT_STRING; }
     break;
 
   case 192:
-#line 1727 "asn1p_y.y"
+#line 1726 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -3978,7 +3977,7 @@
     break;
 
   case 193:
-#line 1733 "asn1p_y.y"
+#line 1732 "asn1p_y.y"
     {
         (yyval.a_expr) = (yyvsp[(3) - (4)].a_expr);
         (yyval.a_expr)->expr_type = ASN_BASIC_INTEGER;
@@ -3987,7 +3986,7 @@
     break;
 
   case 194:
-#line 1738 "asn1p_y.y"
+#line 1737 "asn1p_y.y"
     {
         (yyval.a_expr) = (yyvsp[(3) - (4)].a_expr);
         (yyval.a_expr)->expr_type = ASN_BASIC_ENUMERATED;
@@ -3996,7 +3995,7 @@
     break;
 
   case 195:
-#line 1743 "asn1p_y.y"
+#line 1742 "asn1p_y.y"
     {
         (yyval.a_expr) = (yyvsp[(4) - (5)].a_expr);
         (yyval.a_expr)->expr_type = ASN_BASIC_BIT_STRING;
@@ -4005,7 +4004,7 @@
     break;
 
   case 196:
-#line 1748 "asn1p_y.y"
+#line 1747 "asn1p_y.y"
     {
         (yyval.a_expr) = (yyvsp[(3) - (4)].a_expr);
         (yyval.a_expr)->expr_type = ASN_BASIC_BIT_STRING;
@@ -4014,7 +4013,7 @@
     break;
 
   case 197:
-#line 1753 "asn1p_y.y"
+#line 1752 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -4024,12 +4023,12 @@
     break;
 
   case 198:
-#line 1762 "asn1p_y.y"
+#line 1761 "asn1p_y.y"
     { (yyval.a_type) = ASN_STRING_BMPString; }
     break;
 
   case 199:
-#line 1763 "asn1p_y.y"
+#line 1762 "asn1p_y.y"
     {
 		(yyval.a_type) = ASN_STRING_GeneralString;
 		fprintf(stderr, "WARNING: GeneralString is not fully supported\n");
@@ -4037,7 +4036,7 @@
     break;
 
   case 200:
-#line 1767 "asn1p_y.y"
+#line 1766 "asn1p_y.y"
     {
 		(yyval.a_type) = ASN_STRING_GraphicString;
 		fprintf(stderr, "WARNING: GraphicString is not fully supported\n");
@@ -4045,27 +4044,27 @@
     break;
 
   case 201:
-#line 1771 "asn1p_y.y"
+#line 1770 "asn1p_y.y"
     { (yyval.a_type) = ASN_STRING_IA5String; }
     break;
 
   case 202:
-#line 1772 "asn1p_y.y"
+#line 1771 "asn1p_y.y"
     { (yyval.a_type) = ASN_STRING_ISO646String; }
     break;
 
   case 203:
-#line 1773 "asn1p_y.y"
+#line 1772 "asn1p_y.y"
     { (yyval.a_type) = ASN_STRING_NumericString; }
     break;
 
   case 204:
-#line 1774 "asn1p_y.y"
+#line 1773 "asn1p_y.y"
     { (yyval.a_type) = ASN_STRING_PrintableString; }
     break;
 
   case 205:
-#line 1775 "asn1p_y.y"
+#line 1774 "asn1p_y.y"
     {
 		(yyval.a_type) = ASN_STRING_T61String;
 		fprintf(stderr, "WARNING: T61String is not fully supported\n");
@@ -4073,22 +4072,22 @@
     break;
 
   case 206:
-#line 1779 "asn1p_y.y"
+#line 1778 "asn1p_y.y"
     { (yyval.a_type) = ASN_STRING_TeletexString; }
     break;
 
   case 207:
-#line 1780 "asn1p_y.y"
+#line 1779 "asn1p_y.y"
     { (yyval.a_type) = ASN_STRING_UniversalString; }
     break;
 
   case 208:
-#line 1781 "asn1p_y.y"
+#line 1780 "asn1p_y.y"
     { (yyval.a_type) = ASN_STRING_UTF8String; }
     break;
 
   case 209:
-#line 1782 "asn1p_y.y"
+#line 1781 "asn1p_y.y"
     {
 		(yyval.a_type) = ASN_STRING_VideotexString;
 		fprintf(stderr, "WARNING: VideotexString is not fully supported\n");
@@ -4096,39 +4095,39 @@
     break;
 
   case 210:
-#line 1786 "asn1p_y.y"
+#line 1785 "asn1p_y.y"
     { (yyval.a_type) = ASN_STRING_VisibleString; }
     break;
 
   case 211:
-#line 1787 "asn1p_y.y"
+#line 1786 "asn1p_y.y"
     { (yyval.a_type) = ASN_STRING_ObjectDescriptor; }
     break;
 
   case 216:
-#line 1799 "asn1p_y.y"
+#line 1798 "asn1p_y.y"
     { (yyval.a_constr) = 0; }
     break;
 
   case 218:
-#line 1804 "asn1p_y.y"
+#line 1803 "asn1p_y.y"
     { (yyval.a_constr) = 0; }
     break;
 
   case 220:
-#line 1809 "asn1p_y.y"
+#line 1808 "asn1p_y.y"
     { (yyval.a_constr) = 0; }
     break;
 
   case 223:
-#line 1815 "asn1p_y.y"
+#line 1814 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT((yyval.a_constr), ACT_CA_SET, (yyvsp[(2) - (3)].a_constr), 0);
     }
     break;
 
   case 225:
-#line 1822 "asn1p_y.y"
+#line 1821 "asn1p_y.y"
     {
         if((yyvsp[(2) - (2)].a_constr)->type == ACT_CA_SET && (yyvsp[(2) - (2)].a_constr)->el_count == 1) {
             CONSTRAINT_INSERT((yyval.a_constr), ACT_CA_SET, (yyvsp[(1) - (2)].a_constr), (yyvsp[(2) - (2)].a_constr)->elements[0]);
@@ -4139,7 +4138,7 @@
     break;
 
   case 229:
-#line 1836 "asn1p_y.y"
+#line 1835 "asn1p_y.y"
     {
 		(yyval.a_constr) = asn1p_constraint_new(yylineno, currentModule);
 		(yyval.a_constr)->type = ACT_EL_EXT;
@@ -4147,7 +4146,7 @@
     break;
 
   case 231:
-#line 1841 "asn1p_y.y"
+#line 1840 "asn1p_y.y"
     {
        asn1p_constraint_t *ct;
        ct = asn1p_constraint_new(yylineno, currentModule);
@@ -4157,7 +4156,7 @@
     break;
 
   case 232:
-#line 1847 "asn1p_y.y"
+#line 1846 "asn1p_y.y"
     {
        asn1p_constraint_t *ct;
        ct = asn1p_constraint_new(yylineno, currentModule);
@@ -4169,35 +4168,35 @@
     break;
 
   case 234:
-#line 1859 "asn1p_y.y"
+#line 1858 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT((yyval.a_constr), ACT_CA_AEX, (yyvsp[(3) - (3)].a_constr), 0);
 	}
     break;
 
   case 236:
-#line 1866 "asn1p_y.y"
+#line 1865 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT((yyval.a_constr), ACT_CA_UNI, (yyvsp[(1) - (3)].a_constr), (yyvsp[(3) - (3)].a_constr));
 	}
     break;
 
   case 238:
-#line 1873 "asn1p_y.y"
+#line 1872 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT((yyval.a_constr), ACT_CA_INT, (yyvsp[(1) - (3)].a_constr), (yyvsp[(3) - (3)].a_constr));
 	}
     break;
 
   case 240:
-#line 1881 "asn1p_y.y"
+#line 1880 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT((yyval.a_constr), ACT_CA_EXC, (yyvsp[(1) - (3)].a_constr), (yyvsp[(3) - (3)].a_constr));
 	}
     break;
 
   case 242:
-#line 1888 "asn1p_y.y"
+#line 1887 "asn1p_y.y"
     {
         int ret;
         (yyval.a_constr) = asn1p_constraint_new(yylineno, currentModule);
@@ -4209,7 +4208,7 @@
     break;
 
   case 243:
-#line 1899 "asn1p_y.y"
+#line 1898 "asn1p_y.y"
     {
 		(yyval.a_constr) = asn1p_constraint_new(yylineno, currentModule);
 		checkmem((yyval.a_constr));
@@ -4219,7 +4218,7 @@
     break;
 
   case 244:
-#line 1905 "asn1p_y.y"
+#line 1904 "asn1p_y.y"
     {
 		(yyval.a_constr) = asn1p_constraint_new(yylineno, currentModule);
 		checkmem((yyval.a_constr));
@@ -4229,21 +4228,21 @@
     break;
 
   case 250:
-#line 1921 "asn1p_y.y"
+#line 1920 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT((yyval.a_constr), ACT_CT_FROM, (yyvsp[(2) - (2)].a_constr), 0);
 	}
     break;
 
   case 251:
-#line 1926 "asn1p_y.y"
+#line 1925 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT((yyval.a_constr), ACT_CT_SIZE, (yyvsp[(2) - (2)].a_constr), 0);
 	}
     break;
 
   case 252:
-#line 1931 "asn1p_y.y"
+#line 1930 "asn1p_y.y"
     {
 		(yyval.a_constr) = asn1p_constraint_new(yylineno, currentModule);
 		(yyval.a_constr)->type = ACT_CT_PATTERN;
@@ -4252,7 +4251,7 @@
     break;
 
   case 253:
-#line 1936 "asn1p_y.y"
+#line 1935 "asn1p_y.y"
     {
 		asn1p_ref_t *ref;
 		(yyval.a_constr) = asn1p_constraint_new(yylineno, currentModule);
@@ -4265,7 +4264,7 @@
     break;
 
   case 254:
-#line 1948 "asn1p_y.y"
+#line 1947 "asn1p_y.y"
     {
 		(yyval.a_constr) = asn1p_constraint_new(yylineno, currentModule);
 		checkmem((yyval.a_constr));
@@ -4276,7 +4275,7 @@
     break;
 
   case 256:
-#line 1958 "asn1p_y.y"
+#line 1957 "asn1p_y.y"
     {
 		(yyval.a_value) = asn1p_value_fromint(-123);
 		(yyval.a_value)->type = ATV_MIN;
@@ -4284,7 +4283,7 @@
     break;
 
   case 258:
-#line 1965 "asn1p_y.y"
+#line 1964 "asn1p_y.y"
     {
 		(yyval.a_value) = asn1p_value_fromint(321);
 		(yyval.a_value)->type = ATV_MAX;
@@ -4292,7 +4291,7 @@
     break;
 
   case 260:
-#line 1973 "asn1p_y.y"
+#line 1972 "asn1p_y.y"
     {
 		(yyval.a_value) = _convert_bitstring2binary((yyvsp[(1) - (1)].tv_str), 'B');
 		checkmem((yyval.a_value));
@@ -4301,7 +4300,7 @@
     break;
 
   case 261:
-#line 1978 "asn1p_y.y"
+#line 1977 "asn1p_y.y"
     {
 		(yyval.a_value) = _convert_bitstring2binary((yyvsp[(1) - (1)].tv_str), 'H');
 		checkmem((yyval.a_value));
@@ -4310,7 +4309,7 @@
     break;
 
   case 262:
-#line 1986 "asn1p_y.y"
+#line 1985 "asn1p_y.y"
     {
 		(yyval.a_value) = asn1p_value_fromtype((yyvsp[(2) - (2)].a_expr));
 		checkmem((yyval.a_value));
@@ -4319,7 +4318,7 @@
     break;
 
   case 263:
-#line 1992 "asn1p_y.y"
+#line 1991 "asn1p_y.y"
     {
 		(yyval.a_value) = asn1p_value_fromtype((yyvsp[(1) - (1)].a_expr));
 		checkmem((yyval.a_value));
@@ -4328,14 +4327,14 @@
     break;
 
   case 264:
-#line 2004 "asn1p_y.y"
+#line 2003 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT((yyval.a_constr), ACT_CT_WCOMP, (yyvsp[(3) - (3)].a_constr), 0);
 	}
     break;
 
   case 265:
-#line 2007 "asn1p_y.y"
+#line 2006 "asn1p_y.y"
     {
         assert((yyvsp[(3) - (3)].a_constr)->type == ACT_CA_CSV);
         (yyvsp[(3) - (3)].a_constr)->type = ACT_CT_WCOMPS;
@@ -4344,12 +4343,12 @@
     break;
 
   case 269:
-#line 2015 "asn1p_y.y"
+#line 2014 "asn1p_y.y"
     { (yyval.a_constr) = (yyvsp[(2) - (3)].a_constr); }
     break;
 
   case 270:
-#line 2017 "asn1p_y.y"
+#line 2016 "asn1p_y.y"
     {
         assert((yyvsp[(4) - (5)].a_constr)->type == ACT_CA_CSV);
 		(yyval.a_constr) = asn1p_constraint_new(yylineno, currentModule);
@@ -4365,7 +4364,7 @@
     break;
 
   case 271:
-#line 2030 "asn1p_y.y"
+#line 2029 "asn1p_y.y"
     {
         (yyval.a_constr) = asn1p_constraint_new(yylineno, currentModule);
         (yyval.a_constr)->type = ACT_CA_CSV;
@@ -4374,7 +4373,7 @@
     break;
 
   case 272:
-#line 2035 "asn1p_y.y"
+#line 2034 "asn1p_y.y"
     {
         (yyval.a_constr) = (yyvsp[(1) - (3)].a_constr);
         asn1p_constraint_insert((yyval.a_constr), (yyvsp[(3) - (3)].a_constr));
@@ -4382,7 +4381,7 @@
     break;
 
   case 273:
-#line 2041 "asn1p_y.y"
+#line 2040 "asn1p_y.y"
     {
         (yyval.a_constr) = asn1p_constraint_new(yylineno, currentModule);
         checkmem((yyval.a_constr));
@@ -4394,43 +4393,43 @@
     break;
 
   case 274:
-#line 2055 "asn1p_y.y"
+#line 2054 "asn1p_y.y"
     { (yyval.a_pres) = ACPRES_DEFAULT; }
     break;
 
   case 275:
-#line 2056 "asn1p_y.y"
+#line 2055 "asn1p_y.y"
     { (yyval.a_pres) = (yyvsp[(1) - (1)].a_pres); }
     break;
 
   case 276:
-#line 2060 "asn1p_y.y"
+#line 2059 "asn1p_y.y"
     {
 		(yyval.a_pres) = ACPRES_PRESENT;
 	}
     break;
 
   case 277:
-#line 2063 "asn1p_y.y"
+#line 2062 "asn1p_y.y"
     {
 		(yyval.a_pres) = ACPRES_ABSENT;
 	}
     break;
 
   case 278:
-#line 2066 "asn1p_y.y"
+#line 2065 "asn1p_y.y"
     {
 		(yyval.a_pres) = ACPRES_OPTIONAL;
 	}
     break;
 
   case 282:
-#line 2081 "asn1p_y.y"
+#line 2080 "asn1p_y.y"
     { asn1p_lexer_hack_push_opaque_state(); }
     break;
 
   case 283:
-#line 2081 "asn1p_y.y"
+#line 2080 "asn1p_y.y"
     {
 		(yyval.a_constr) = asn1p_constraint_new(yylineno, currentModule);
 		checkmem((yyval.a_constr));
@@ -4442,7 +4441,7 @@
     break;
 
   case 284:
-#line 2092 "asn1p_y.y"
+#line 2091 "asn1p_y.y"
     {
 		(yyval.a_constr) = asn1p_constraint_new(yylineno, currentModule);
 		(yyval.a_constr)->type = ACT_CT_CTNG;
@@ -4452,41 +4451,41 @@
     break;
 
   case 285:
-#line 2101 "asn1p_y.y"
+#line 2100 "asn1p_y.y"
     { (yyval.a_ctype) = ACT_EL_RANGE; }
     break;
 
   case 286:
-#line 2102 "asn1p_y.y"
+#line 2101 "asn1p_y.y"
     { (yyval.a_ctype) = ACT_EL_RLRANGE; }
     break;
 
   case 287:
-#line 2103 "asn1p_y.y"
+#line 2102 "asn1p_y.y"
     { (yyval.a_ctype) = ACT_EL_LLRANGE; }
     break;
 
   case 288:
-#line 2104 "asn1p_y.y"
+#line 2103 "asn1p_y.y"
     { (yyval.a_ctype) = ACT_EL_ULRANGE; }
     break;
 
   case 289:
-#line 2107 "asn1p_y.y"
+#line 2106 "asn1p_y.y"
     {
 		(yyval.a_constr) = (yyvsp[(1) - (1)].a_constr);
 	}
     break;
 
   case 290:
-#line 2110 "asn1p_y.y"
+#line 2109 "asn1p_y.y"
     {
 		(yyval.a_constr) = (yyvsp[(1) - (1)].a_constr);
 	}
     break;
 
   case 291:
-#line 2119 "asn1p_y.y"
+#line 2118 "asn1p_y.y"
     {
 		asn1p_ref_t *ref = asn1p_ref_new(yylineno, currentModule);
 		asn1p_constraint_t *ct;
@@ -4503,14 +4502,14 @@
     break;
 
   case 292:
-#line 2135 "asn1p_y.y"
+#line 2134 "asn1p_y.y"
     {
 		CONSTRAINT_INSERT((yyval.a_constr), ACT_CA_CRC, (yyvsp[(1) - (4)].a_constr), (yyvsp[(3) - (4)].a_constr));
 	}
     break;
 
   case 293:
-#line 2141 "asn1p_y.y"
+#line 2140 "asn1p_y.y"
     {
 		(yyval.a_constr) = asn1p_constraint_new(yylineno, currentModule);
 		checkmem((yyval.a_constr));
@@ -4520,7 +4519,7 @@
     break;
 
   case 294:
-#line 2147 "asn1p_y.y"
+#line 2146 "asn1p_y.y"
     {
 		asn1p_constraint_t *ct;
 		ct = asn1p_constraint_new(yylineno, currentModule);
@@ -4532,7 +4531,7 @@
     break;
 
   case 295:
-#line 2161 "asn1p_y.y"
+#line 2160 "asn1p_y.y"
     {
 		char *p = malloc(strlen((yyvsp[(2) - (2)].tv_str)) + 2);
 		int ret;
@@ -4547,7 +4546,7 @@
     break;
 
   case 296:
-#line 2172 "asn1p_y.y"
+#line 2171 "asn1p_y.y"
     {
 		char *p = malloc(strlen((yyvsp[(3) - (3)].tv_str)) + 3);
 		int ret;
@@ -4563,14 +4562,14 @@
     break;
 
   case 297:
-#line 2188 "asn1p_y.y"
+#line 2187 "asn1p_y.y"
     {
 		(yyval.tv_str) = (yyvsp[(1) - (1)].tv_str);
 	}
     break;
 
   case 298:
-#line 2191 "asn1p_y.y"
+#line 2190 "asn1p_y.y"
     {
 		int l1 = strlen((yyvsp[(1) - (3)].tv_str));
 		int l3 = strlen((yyvsp[(3) - (3)].tv_str));
@@ -4585,7 +4584,7 @@
     break;
 
   case 299:
-#line 2211 "asn1p_y.y"
+#line 2210 "asn1p_y.y"
     {
 		(yyval.a_marker).flags = EM_NOMARK;
 		(yyval.a_marker).default_value = 0;
@@ -4593,12 +4592,12 @@
     break;
 
   case 300:
-#line 2215 "asn1p_y.y"
+#line 2214 "asn1p_y.y"
     { (yyval.a_marker) = (yyvsp[(1) - (1)].a_marker); }
     break;
 
   case 301:
-#line 2219 "asn1p_y.y"
+#line 2218 "asn1p_y.y"
     {
 		(yyval.a_marker).flags = EM_OPTIONAL | EM_INDIRECT;
 		(yyval.a_marker).default_value = 0;
@@ -4606,7 +4605,7 @@
     break;
 
   case 302:
-#line 2223 "asn1p_y.y"
+#line 2222 "asn1p_y.y"
     {
 		(yyval.a_marker).flags = EM_DEFAULT;
 		(yyval.a_marker).default_value = (yyvsp[(2) - (2)].a_value);
@@ -4614,7 +4613,7 @@
     break;
 
   case 303:
-#line 2230 "asn1p_y.y"
+#line 2229 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -4623,7 +4622,7 @@
     break;
 
   case 304:
-#line 2235 "asn1p_y.y"
+#line 2234 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(1) - (3)].a_expr);
 		asn1p_expr_add((yyval.a_expr), (yyvsp[(3) - (3)].a_expr));
@@ -4631,7 +4630,7 @@
     break;
 
   case 305:
-#line 2241 "asn1p_y.y"
+#line 2240 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -4642,7 +4641,7 @@
     break;
 
   case 306:
-#line 2250 "asn1p_y.y"
+#line 2249 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -4651,7 +4650,7 @@
     break;
 
   case 307:
-#line 2255 "asn1p_y.y"
+#line 2254 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(1) - (3)].a_expr);
 		asn1p_expr_add((yyval.a_expr), (yyvsp[(3) - (3)].a_expr));
@@ -4659,7 +4658,7 @@
     break;
 
   case 308:
-#line 2262 "asn1p_y.y"
+#line 2261 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -4671,7 +4670,7 @@
     break;
 
   case 309:
-#line 2270 "asn1p_y.y"
+#line 2269 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -4683,7 +4682,7 @@
     break;
 
   case 310:
-#line 2280 "asn1p_y.y"
+#line 2279 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -4692,7 +4691,7 @@
     break;
 
   case 311:
-#line 2285 "asn1p_y.y"
+#line 2284 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(1) - (3)].a_expr);
 		asn1p_expr_add((yyval.a_expr), (yyvsp[(3) - (3)].a_expr));
@@ -4700,7 +4699,7 @@
     break;
 
   case 312:
-#line 2292 "asn1p_y.y"
+#line 2291 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -4712,7 +4711,7 @@
     break;
 
   case 313:
-#line 2300 "asn1p_y.y"
+#line 2299 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -4724,7 +4723,7 @@
     break;
 
   case 314:
-#line 2310 "asn1p_y.y"
+#line 2309 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(1) - (1)].a_expr);
         asn1p_expr_t *first_memb = TQ_FIRST(&((yyval.a_expr)->members));
@@ -4741,7 +4740,7 @@
     break;
 
   case 315:
-#line 2325 "asn1p_y.y"
+#line 2324 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -4750,7 +4749,7 @@
     break;
 
   case 316:
-#line 2330 "asn1p_y.y"
+#line 2329 "asn1p_y.y"
     {
 		(yyval.a_expr) = (yyvsp[(1) - (3)].a_expr);
 		asn1p_expr_add((yyval.a_expr), (yyvsp[(3) - (3)].a_expr));
@@ -4758,7 +4757,7 @@
     break;
 
   case 317:
-#line 2337 "asn1p_y.y"
+#line 2336 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -4769,7 +4768,7 @@
     break;
 
   case 318:
-#line 2344 "asn1p_y.y"
+#line 2343 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -4781,7 +4780,7 @@
     break;
 
   case 319:
-#line 2352 "asn1p_y.y"
+#line 2351 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -4793,7 +4792,7 @@
     break;
 
   case 320:
-#line 2360 "asn1p_y.y"
+#line 2359 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -4804,7 +4803,7 @@
     break;
 
   case 321:
-#line 2367 "asn1p_y.y"
+#line 2366 "asn1p_y.y"
     {
 		(yyval.a_expr) = NEW_EXPR();
 		checkmem((yyval.a_expr));
@@ -4816,7 +4815,7 @@
     break;
 
   case 322:
-#line 2378 "asn1p_y.y"
+#line 2377 "asn1p_y.y"
     {
 		(yyval.a_value) = asn1p_value_fromint((yyvsp[(1) - (1)].a_int));
 		checkmem((yyval.a_value));
@@ -4824,7 +4823,7 @@
     break;
 
   case 323:
-#line 2382 "asn1p_y.y"
+#line 2381 "asn1p_y.y"
     {
 		(yyval.a_value) = asn1p_value_fromint((yyvsp[(1) - (1)].a_int));
 		checkmem((yyval.a_value));
@@ -4832,7 +4831,7 @@
     break;
 
   case 324:
-#line 2389 "asn1p_y.y"
+#line 2388 "asn1p_y.y"
     {
 		(yyval.a_value) = asn1p_value_fromdouble((yyvsp[(1) - (1)].a_dbl));
 		checkmem((yyval.a_value));
@@ -4840,17 +4839,17 @@
     break;
 
   case 325:
-#line 2420 "asn1p_y.y"
+#line 2419 "asn1p_y.y"
     { memset(&(yyval.a_tag), 0, sizeof((yyval.a_tag))); }
     break;
 
   case 326:
-#line 2421 "asn1p_y.y"
+#line 2420 "asn1p_y.y"
     { (yyval.a_tag) = (yyvsp[(1) - (1)].a_tag); }
     break;
 
   case 327:
-#line 2425 "asn1p_y.y"
+#line 2424 "asn1p_y.y"
     {
 		(yyval.a_tag) = (yyvsp[(1) - (2)].a_tag);
 		(yyval.a_tag).tag_mode = (yyvsp[(2) - (2)].a_tag).tag_mode;
@@ -4858,7 +4857,7 @@
     break;
 
   case 328:
-#line 2432 "asn1p_y.y"
+#line 2431 "asn1p_y.y"
     {
 		(yyval.a_tag) = (yyvsp[(2) - (4)].a_tag);
 		(yyval.a_tag).tag_value = (yyvsp[(3) - (4)].a_int);
@@ -4866,42 +4865,42 @@
     break;
 
   case 329:
-#line 2438 "asn1p_y.y"
+#line 2437 "asn1p_y.y"
     { (yyval.a_tag).tag_class = TC_CONTEXT_SPECIFIC; }
     break;
 
   case 330:
-#line 2439 "asn1p_y.y"
+#line 2438 "asn1p_y.y"
     { (yyval.a_tag).tag_class = TC_UNIVERSAL; }
     break;
 
   case 331:
-#line 2440 "asn1p_y.y"
+#line 2439 "asn1p_y.y"
     { (yyval.a_tag).tag_class = TC_APPLICATION; }
     break;
 
   case 332:
-#line 2441 "asn1p_y.y"
+#line 2440 "asn1p_y.y"
     { (yyval.a_tag).tag_class = TC_PRIVATE; }
     break;
 
   case 333:
-#line 2445 "asn1p_y.y"
+#line 2444 "asn1p_y.y"
     { (yyval.a_tag).tag_mode = TM_DEFAULT; }
     break;
 
   case 334:
-#line 2446 "asn1p_y.y"
+#line 2445 "asn1p_y.y"
     { (yyval.a_tag).tag_mode = TM_IMPLICIT; }
     break;
 
   case 335:
-#line 2447 "asn1p_y.y"
+#line 2446 "asn1p_y.y"
     { (yyval.a_tag).tag_mode = TM_EXPLICIT; }
     break;
 
   case 336:
-#line 2451 "asn1p_y.y"
+#line 2450 "asn1p_y.y"
     {
 		checkmem((yyvsp[(1) - (1)].tv_str));
 		(yyval.tv_str) = (yyvsp[(1) - (1)].tv_str);
@@ -4909,7 +4908,7 @@
     break;
 
   case 337:
-#line 2455 "asn1p_y.y"
+#line 2454 "asn1p_y.y"
     {
 		checkmem((yyvsp[(1) - (1)].tv_str));
 		(yyval.tv_str) = (yyvsp[(1) - (1)].tv_str);
@@ -4917,19 +4916,19 @@
     break;
 
   case 338:
-#line 2463 "asn1p_y.y"
+#line 2462 "asn1p_y.y"
     { (yyval.tv_str) = 0; }
     break;
 
   case 339:
-#line 2464 "asn1p_y.y"
+#line 2463 "asn1p_y.y"
     {
 		(yyval.tv_str) = (yyvsp[(1) - (1)].tv_str);
 	}
     break;
 
   case 340:
-#line 2470 "asn1p_y.y"
+#line 2469 "asn1p_y.y"
     {
 		checkmem((yyvsp[(1) - (1)].tv_str));
 		(yyval.tv_str) = (yyvsp[(1) - (1)].tv_str);
@@ -4937,7 +4936,7 @@
     break;
 
   case 341:
-#line 2477 "asn1p_y.y"
+#line 2476 "asn1p_y.y"
     {
 		(yyval.a_ref) = asn1p_ref_new(yylineno, currentModule);
 		asn1p_ref_add_component((yyval.a_ref), (yyvsp[(1) - (1)].tv_str), RLT_lowercase);
@@ -4946,7 +4945,7 @@
     break;
 
   case 342:
-#line 2484 "asn1p_y.y"
+#line 2483 "asn1p_y.y"
     {
 		(yyval.a_value) = asn1p_value_fromref((yyvsp[(1) - (1)].a_ref), 0);
     }
@@ -4954,7 +4953,7 @@
 
 
 /* Line 1267 of yacc.c.  */
-#line 4958 "asn1p_y.c"
+#line 4957 "asn1p_y.c"
       default: break;
     }
   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -5168,7 +5167,7 @@
 }
 
 
-#line 2488 "asn1p_y.y"
+#line 2487 "asn1p_y.y"
 
 
 
diff --git a/libasn1parser/asn1p_y.h b/libasn1parser/asn1p_y.h
index 9e5f2ce..8581bc8 100644
--- a/libasn1parser/asn1p_y.h
+++ b/libasn1parser/asn1p_y.h
@@ -262,7 +262,7 @@
 
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
 typedef union YYSTYPE
-#line 116 "asn1p_y.y"
+#line 115 "asn1p_y.y"
 {
 	asn1p_t			*a_grammar;
 	asn1p_module_flags_e	 a_module_flags;
diff --git a/libasn1parser/asn1p_y.y b/libasn1parser/asn1p_y.y
index 4d209c3..0b1c9e4 100644
--- a/libasn1parser/asn1p_y.y
+++ b/libasn1parser/asn1p_y.y
@@ -95,15 +95,14 @@
 #ifdef	AL_IMPORT
 #error	AL_IMPORT DEFINED ELSEWHERE!
 #endif
-#define	AL_IMPORT(to,where,from,field)	do {				\
-		if(!(from)) break;					\
-		while(TQ_FIRST(&((from)->where))) {			\
-			TQ_ADD(&((to)->where),				\
-				TQ_REMOVE(&((from)->where), field),	\
-				field);					\
-		}							\
-		assert(TQ_FIRST(&((from)->where)) == 0);		\
-	} while(0)
+#define AL_IMPORT(to, where, from, field)                                      \
+    do {                                                                       \
+        if(!(from)) break;                                                     \
+        while(TQ_FIRST(&((from)->where))) {                                    \
+            TQ_ADD(&((to)->where), TQ_REMOVE(&((from)->where), field), field); \
+        }                                                                      \
+        assert(TQ_FIRST(&((from)->where)) == 0);                               \
+    } while(0)
 
 %}
 
@@ -589,7 +588,7 @@
 		$$ = asn1p_module_new();
 		AL_IMPORT($$, exports, $1, xp_next);
 		AL_IMPORT($$, imports, $2, xp_next);
-		AL_IMPORT($$, members, $3, next);
+		asn1p_module_move_members($$, $3);
 
 		asn1p_module_free($1);
 		asn1p_module_free($2);
@@ -608,7 +607,7 @@
 			$$ = $2;
 			break;
 		}
-		AL_IMPORT($$, members, $2, next);
+        asn1p_module_move_members($$, $2);
 		asn1p_module_free($2);
 	}
 	;
@@ -623,14 +622,14 @@
 		checkmem($$);
 		assert($1->expr_type != A1TC_INVALID);
 		assert($1->meta_type != AMT_INVALID);
-		TQ_ADD(&($$->members), $1, next);
+		asn1p_module_member_add($$, $1);
 	}
 	| ValueAssignment {
 		$$ = asn1p_module_new();
 		checkmem($$);
 		assert($1->expr_type != A1TC_INVALID);
 		assert($1->meta_type != AMT_INVALID);
-		TQ_ADD(&($$->members), $1, next);
+		asn1p_module_member_add($$, $1);
 	}
 	/*
 	 * Value set definition
@@ -644,7 +643,7 @@
 		checkmem($$);
 		assert($1->expr_type != A1TC_INVALID);
 		assert($1->meta_type != AMT_INVALID);
-		TQ_ADD(&($$->members), $1, next);
+		asn1p_module_member_add($$, $1);
 	}
 	| TOK_ENCODING_CONTROL TOK_capitalreference 
 		{ asn1p_lexer_hack_push_encoding_control(); }
@@ -728,11 +727,11 @@
 	ImportsElement {
 		$$ = asn1p_xports_new();
 		checkmem($$);
-		TQ_ADD(&($$->members), $1, next);
+		TQ_ADD(&($$->xp_members), $1, next);
 	}
 	| ImportsList ',' ImportsElement {
 		$$ = $1;
-		TQ_ADD(&($$->members), $3, next);
+		TQ_ADD(&($$->xp_members), $3, next);
 	}
 	;
 
@@ -789,11 +788,11 @@
 	ExportsElement {
 		$$ = asn1p_xports_new();
 		assert($$);
-		TQ_ADD(&($$->members), $1, next);
+		TQ_ADD(&($$->xp_members), $1, next);
 	}
 	| ExportsBody ',' ExportsElement {
 		$$ = $1;
-		TQ_ADD(&($$->members), $3, next);
+		TQ_ADD(&($$->xp_members), $3, next);
 	}
 	;