COMPONENTS OF support and other enhancements

diff --git a/libasn1parser/asn1p_expr.h b/libasn1parser/asn1p_expr.h
index ef1941b..e00e740 100644
--- a/libasn1parser/asn1p_expr.h
+++ b/libasn1parser/asn1p_expr.h
@@ -35,12 +35,14 @@
 	A1TC_BITVECTOR,		/* A plain collection of bits */
 	A1TC_OPAQUE,		/* Opaque data encoded as a bitvector */
 	A1TC_EXTENSIBLE,	/* An extension marker "..." */
+	A1TC_COMPONENTS_OF,	/* COMPONENTS OF clause */
 	A1TC_PARAMETRIZED,	/* A parametrized type declaration */
 	A1TC_VALUESET,		/* Value set definition */
 	A1TC_CLASSDEF,		/* Information Object Class */
 	A1TC_CLASSFIELD,	/* Information Object Class field */
 	A1TC_INSTANCE,		/* Instance of Object Class */
 	A1TC_TYPEID,		/* Type identifier */
+
 	/*
 	 * ASN.1 Constructed types
 	 */
@@ -69,6 +71,7 @@
 	ASN_BASIC_CHARACTER_STRING,
 	ASN_BASIC_UTCTime,
 	ASN_BASIC_GeneralizedTime,
+
 	/*
 	 * ASN.1 String types
 	 */
@@ -93,6 +96,8 @@
 #include "asn1p_expr_str.h"
 #include "asn1p_expr2uclass.h"
 
+struct asn1p_module_s;	/* Forward declaration */
+
 /*
  * A named collection of types.
  */
@@ -192,6 +197,9 @@
 	 * grammar source.
 	 */
 	int _lineno;
+
+	struct asn1p_module_s *module;	/* Defined in module */
+
 	/*
 	 * Marks are used for various purposes.
 	 * Here are some predefined ones.
@@ -201,6 +209,8 @@
 		TM_RECURSION,	/* Used to break recursion */
 	} _mark;
 
+	int _anonymous_type;	/* Used by the compiler */
+
 	/*
 	 * Opaque data may be attached to this structure,
 	 * probably by compiler.
@@ -214,7 +224,7 @@
  * Constructor and destructor.
  */
 asn1p_expr_t *asn1p_expr_new(int _lineno);
-asn1p_expr_t *asn1p_expr_clone(asn1p_expr_t *);
+asn1p_expr_t *asn1p_expr_clone(asn1p_expr_t *, int skip_extensions);
 void asn1p_expr_free(asn1p_expr_t *expr);
 
 #endif	/* ASN1_PARSER_EXPR_H */