support for a class of circular references

diff --git a/tests/42-real-life-OK.asn1.-PR b/tests/42-real-life-OK.asn1.-PR
index 6394912..7dfb845 100644
--- a/tests/42-real-life-OK.asn1.-PR
+++ b/tests/42-real-life-OK.asn1.-PR
@@ -2,22 +2,20 @@
 /*** <<< INCLUDES [LogLine] >>> ***/
 
 #include <IA5String.h>
-#include <VariablePartSet.h>
 #include <asn_SEQUENCE_OF.h>
 #include <constr_SEQUENCE_OF.h>
 #include <constr_SEQUENCE.h>
 
-/*** <<< DEPS [LogLine] >>> ***/
+/*** <<< FWD-DECLS [LogLine] >>> ***/
 
-extern asn_TYPE_descriptor_t asn_DEF_LogLine;
+struct VariablePartSet;	/* Forward declaration */
 
 /*** <<< TYPE-DECLS [LogLine] >>> ***/
 
-
 typedef struct LogLine {
 	IA5String_t	 line_digest;
 	struct varsets {
-		A_SEQUENCE_OF(VariablePartSet_t) list;
+		A_SEQUENCE_OF(struct VariablePartSet) list;
 		
 		/* Context for parsing across buffer boundaries */
 		asn_struct_ctx_t _asn_ctx;
@@ -31,6 +29,14 @@
 	asn_struct_ctx_t _asn_ctx;
 } LogLine_t;
 
+/*** <<< FUNC-DECLS [LogLine] >>> ***/
+
+extern asn_TYPE_descriptor_t asn_DEF_LogLine;
+
+/*** <<< POST-INCLUDE [LogLine] >>> ***/
+
+#include <VariablePartSet.h>
+
 /*** <<< CODE [LogLine] >>> ***/
 
 static int
@@ -162,21 +168,19 @@
 /*** <<< INCLUDES [VariablePartSet] >>> ***/
 
 #include <ActionItem.h>
-#include <VariablePart.h>
 #include <asn_SEQUENCE_OF.h>
 #include <constr_SEQUENCE_OF.h>
 #include <constr_SEQUENCE.h>
 
-/*** <<< DEPS [VariablePartSet] >>> ***/
+/*** <<< FWD-DECLS [VariablePartSet] >>> ***/
 
-extern asn_TYPE_descriptor_t asn_DEF_VariablePartSet;
+struct VariablePart;	/* Forward declaration */
 
 /*** <<< TYPE-DECLS [VariablePartSet] >>> ***/
 
-
 typedef struct VariablePartSet {
 	struct vparts {
-		A_SEQUENCE_OF(VariablePart_t) list;
+		A_SEQUENCE_OF(struct VariablePart) list;
 		
 		/* Context for parsing across buffer boundaries */
 		asn_struct_ctx_t _asn_ctx;
@@ -191,6 +195,14 @@
 	asn_struct_ctx_t _asn_ctx;
 } VariablePartSet_t;
 
+/*** <<< FUNC-DECLS [VariablePartSet] >>> ***/
+
+extern asn_TYPE_descriptor_t asn_DEF_VariablePartSet;
+
+/*** <<< POST-INCLUDE [VariablePartSet] >>> ***/
+
+#include <VariablePart.h>
+
 /*** <<< CODE [VariablePartSet] >>> ***/
 
 static int
@@ -325,11 +337,9 @@
 	VariablePart_PR_vrange,
 	/* Extensions may appear below */
 } VariablePart_PR;
-extern asn_TYPE_descriptor_t asn_DEF_VariablePart;
 
 /*** <<< TYPE-DECLS [VariablePart] >>> ***/
 
-
 typedef struct VariablePart {
 	VariablePart_PR present;
 	union {
@@ -360,6 +370,10 @@
 	asn_struct_ctx_t _asn_ctx;
 } VariablePart_t;
 
+/*** <<< FUNC-DECLS [VariablePart] >>> ***/
+
+extern asn_TYPE_descriptor_t asn_DEF_VariablePart;
+
 /*** <<< CODE [VariablePart] >>> ***/
 
 static int
@@ -557,11 +571,9 @@
 	 * Enumeration is extensible
 	 */
 } accept_as_e;
-extern asn_TYPE_descriptor_t asn_DEF_ActionItem;
 
 /*** <<< TYPE-DECLS [ActionItem] >>> ***/
 
-
 typedef struct ActionItem {
 	ENUMERATED_t	 accept_as;
 	struct notify {
@@ -592,6 +604,7 @@
 /*** <<< FUNC-DECLS [ActionItem] >>> ***/
 
 /* extern asn_TYPE_descriptor_t asn_DEF_accept_as_2;	// (Use -fall-defs-global to expose) */
+extern asn_TYPE_descriptor_t asn_DEF_ActionItem;
 
 /*** <<< CODE [ActionItem] >>> ***/